我一直在研究如何构建一个在mono上运行的websocket服务,我的问题主要是软件设计。目标是实现一个.Net WCF(或类似)服务,web客户端可以在不刷新页面的情况下与之通信,并在浏览器ui上更新信息,而无需用户输入。
我知道mono不支持System.Net.WebSockets,但我尝试过的一件事是在web.config中使用带有自定义绑定的WCF服务,以避免使用Microsoft web套接字类。当然,mono开始抱怨无法识别的元素"webSocketSettings"。
这是我用于测试wcf服务的绑定:
<bindings>
<customBinding>
<binding name="wsHttpBinding">
<byteStreamMessageEncoding/>
<httpTransport>
<webSocketSettings transportUsage="Always"
createNotificationOnConnection="true"/>
</httpTransport>
</binding>
</customBinding>
</bindings>
知道了这一点,我认为mono也不支持网络套接字绑定。
问题是,目前有没有任何方法可以配置wcf服务,甚至控制台应用程序(在mono上的linux服务器上作为守护进程运行),以便通过web套接字进行通信?也就是说,不使用使用任何第三方库,并使用mono将其托管在Linux服务器上?如果没有,我有什么选择?使用第三方库,构建类似于使用ajax等轮询wcf服务方法的web客户端的东西?
如有任何意见,我将不胜感激。
谢谢,奥利
如果你无法在Mono中使用它,我开发了一个名为WebSocketListener的WebSocket组件来支持它。看看这个关于如何在Mono上使用它的指南。