当前位置:  开发笔记 > 运维 > 正文

Suave中的Websockets

如何解决《Suave中的Websockets》经验,为你挑选了1个好方法。

我一直在研究使用带有Suave Web服务器的websockets.不幸的是,它没有很好的记录,我设法找到的是:https://github.com/SuaveIO/suave/tree/master/examples/WebSocket

但是,这只显示了响应发出请求的客户端的websocket,我想基本上让套接字响应所有连接的客户端.像聊天服务器的东西.

我过去曾使用过SignalR,但我更愿意为此避免使用它.

那么,我如何让Suave服务器向所有连接的websocket客户端发送数据呢?



1> Honza Bresta..:

Suave没有提供开箱即用的东西,但是你可以很容易地扩展这个例子.

ws传递给handShake函数的套接字处理程序可以将客户端信息传递到外部,您可以围绕它构建发送/广播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
    }

然后由您注入onConnectonDisconnect处理注册/取消注册客户端.

我用a MailboxProcessor来序列化连接/断开/发送操作,或者它很容易使用Reactive Extensions,或者像ConcurrentDictionary... 这样的共享可变并发存储.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有