我一直在使用 Network.WebSockets 对 websocket 服务器进行编程.
您可以使用 runServer
启动 Websockets 服务器,如下所示:
app :: Request -> WebSockets Hybi00 ()
app _ = app1
main :: IO ()
main = runServer "0.0.0.0" 8000 app
但我真的希望 Websockets 服务器能够与普通的 Snap Web 服务器一起在端口 80 上运行。
Node.js 能够通过 Socket.io 执行此操作(请参阅左侧示例中的 http://socket.io/#how-to-use)。
这是一个实现类似功能的 Ruby 库:https://github.com/simulacre/sinatra-websocket
在 Haskell 中如何做到这一点?
最佳答案
websockets-snap包有一个功能:
runWebSocketsSnap::协议(protocol) p => (请求 -> WebSockets p ()) -> Snap ()
这应该让您可以从应用程序中的几乎任何位置使用 websocket。这是一个简单的例子:
main = quickHttpServe $ route [ ("hello", writeText "hello world")
, ("websocket", runWebSocketsSnap ...)
]
关于haskell - 如何使用 Haskell 在同一端口上运行 Websockets 服务器和普通 HTTP Web 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12753249/