の反対のようなものはありliftIO
ますか?私は websockets を使用しており、別のスレッドでサーバーからのメッセージをリッスンできるようにしたいと考えています。これが私がやっていることです:
import Network.WebSockets
import qualified Data.Text as T
import Control.Monad.IO.Class
import Control.Monad
import Control.Concurrent
import Control.Applicative
printMessages :: WebSockets Hybi00 ()
printMessages = forever $ do
resp <- receiveDataMessage
liftIO $ print resp
run :: WebSockets Hybi00 ()
run = do
liftIO . forkIO $ printMessages
forever $ do
line <- liftIO getLine
sendTextData . T.pack $ line
main = connect "0.0.0.0" 8080 "/" run
したがってprintMessages
、サーバーからのメッセージをリッスンし、それらを出力し続けます。問題は、forkIO
を返す関数を期待することですIO ()
。printMessages
IO モナドで実行する方法はありますか?