我在搞乱 WebSockets,我写了一个“回显服务器”,我希望它在运行时记录到控制台:
echo = Warp.run 3000 app
where
app = WS.websocketsOr
WS.defaultConnectionOptions
wsApp
httpApp
httpApp _ respond = do
put "HTTP Request Recieved"
respond $ Wai.responseFile
Http.status200
[]
"web/index.html"
Nothing
wsApp :: WS.ServerApp
wsApp pendingConn = do
conn <- WS.acceptRequest pendingConn
WS.forkPingThread conn 30
put "WebSocket Connection Open"
listen conn
listen :: WS.Connection -> IO ()
listen conn = forever $ do
str <- WS.receiveData conn :: (IO Text.Text)
put $ Text.unpack str
WS.sendTextData conn str
main :: IO ()
main = do
put "Echo WebSocket Running ..."
echo
put str = hPutStrLn stdout str >> hFlush stdout
如您所见,我尝试过冲洗stdout
但没有成功。我明白了
$ ./echoServer
Echo WebSocket Running ...
但仅此而已。即使我可以在浏览器中成功加载“web/index.html”并成功建立到 WebSocket 的连接并使用它,我也没有从控制台得到任何反馈。
我需要做什么才能将输出输出到控制台?
库版本:
- 扭曲:3.2.13
- 围:3.2.1.1
- wai-websockets:3.0.1.1
- 网络套接字:0.12.2.0