Websocket 文雅的网袋
我一直在研究如何在Suave web服务器上使用WebSocket。不幸的是,它没有很好的文档记录,我所能找到的只是: 但是,这只显示了websocket对发出请求的客户端的响应,我希望基本上让套接字响应所有连接的客户端。类似于聊天服务器的东西 我过去使用过SignalR,但现在更倾向于避免使用它Websocket 文雅的网袋,websocket,f#,suave,Websocket,F#,Suave,我一直在研究如何在Suave web服务器上使用WebSocket。不幸的是,它没有很好的文档记录,我所能找到的只是: 但是,这只显示了websocket对发出请求的客户端的响应,我希望基本上让套接字响应所有连接的客户端。类似于聊天服务器的东西 我过去使用过SignalR,但现在更倾向于避免使用它 那么,我该如何让Suave服务器向所有连接的websocket客户端发送数据呢?Suave没有提供任何类似的现成功能,但是您可以轻松地扩展示例来实现这一点 传递给handShake函数的套接字处理程序
那么,我该如何让Suave服务器向所有连接的websocket客户端发送数据呢?Suave没有提供任何类似的现成功能,但是您可以轻松地扩展示例来实现这一点 传递给
handShake
函数的套接字处理程序ws
可以将客户端信息传递到外部,您可以围绕它构建一个发送/广播API
ws
函数可以这样修改
let ws onConnect onDisconnect (webSocket: WebSocket) (context: HttpContext) =
let loop () = (* the socket logic stays the same *)
socket {
onConnect webSocket context
try
do! loop ()
finally
onDisconnect context
}
然后由您注入onConnect
和onDisconnect
句柄来注册/取消注册客户端
我使用MailboxProcessor
来序列化连接/断开连接/发送操作,或者很容易使用反应式扩展,或者像concurrentdirectionary
这样的共享可变并发存储