.NET WebSocket客户端和服务器库
本文关键字:服务器 客户端 WebSocket NET | 更新日期: 2023-09-27 18:20:03
我正在寻找一个开源、跨平台、主动维护的.NET库,它为客户端和服务器提供websocket功能,这样大多数代码(在建立连接后)都可以使用相同的抽象,而不管它在连接的哪一边。理想情况下,它将是System.Net.WebSockets
的一个独立于平台的实现,但我真的不在乎它是否定义了自己的类型,只要有一些抽象的WebSocket
类可以由客户端和服务器代码共享。
我看过但不合格的东西(但如果我错了,请纠正我):
- System.Net.WebSockets(仅限客户端,仅限Win8+)
- WebSocket4Net(仅限客户端)
- WebSocket Portable(仅限客户端)
- Fleck(仅限服务器)
- WebSocketListener(仅限服务器)
- SuperWebSocket(仅限服务器)
- Owin.WebSocket(仅限服务器)
- PowerWebSockets(专有)
- XSockets(专有)
- Alchemy Websockets(上一次发布于2012年,跟踪器中有许多活动错误,但没有答案)
我能找到的唯一一个似乎符合要求的是websocketsharp。然而,让我担心的是,跟踪器中存在大量未解决的问题,比如客户端无法连接、数据帧无效等——听起来还不太成熟。
有没有其他符合我要求的候选人我错过了?或者我错了,上面列出的任何库都只是客户端/服务器?
看看微软的SignalR。SignalR是围绕websocket的更高级别抽象。SignalR还允许用.NET(C#)编写客户端。来自SignalR文件:
SignalR Hubs API使您能够从服务器向连接的客户端以及从客户端向服务器进行远程过程调用(RPC)。在服务器代码中,定义客户端可以调用的方法,并调用在客户端上运行的方法。在客户端代码中,定义可以从服务器调用的方法,并调用在服务器上运行的方法。SignalR为您处理所有客户端到服务器的管道。
SignalR还提供了一个称为持久连接的较低级别的API。有关SignalR、集线器和持久连接的介绍,或有关如何构建完整SignalR应用程序的教程,请参阅SignalR-入门。
另一个解决方案是使用Edge.js。这是一个使用Node.js的.NET库。您可以让Node.js同时充当WebSocket通道的服务器和客户端。然后利用Edge.js作为连接Nodejs和.Net的桥梁。github.com/tjanczuk/edge/tree/master#从nodejs编写clr脚本。两者都是经过积极维护的优秀框架。
然而,Edge.js的使用确实引入了一个额外的依赖项,node.js
您可以查看WebSocketRPC。该库基于System.Net.Webockets,并且是可移植的。此外,它还自动生成JavaScript客户端代码,并支持ASP.NET Core。我建议您先试用GitHub存储库中的示例。
免责声明:我是图书馆的作者。