.NET WebSocket客户端和服务器库

时间:2015-11-01 20:53:28

标签: c# .net websocket

我正在寻找一个开源,跨平台,积极维护的.NET库,它为两个客户端和服务器提供websocket功能,以大多数代码的方式(在建立连接之后)可以使用相同的抽象,而不管它所在的连接的哪一侧。理想情况下,它将是WebSocket的独立于平台的实现,但我不关心它是否定义了自己的类型,只要有一些单一的抽象{{1}}类可以由客户端和服务器代码共享。

我看过但没有资格的事情(如果我错了,请纠正我):

  • System.Net.WebSockets(仅限客户端,仅限Win8 +)
  • WebSocket4Net(仅限客户端)
  • WebSocket Portable(仅限客户端)
  • Fleck(仅限服务器)
  • WebSocketListener(仅限服务器)
  • SuperWebSocket(仅限服务器)
  • Owin.WebSocket(仅限服务器)
  • PowerWebSockets(专有)
  • XSockets(专有)
  • Alchemy Websockets(2012年最后一个版本,跟踪器中的许多活动错误,没有答案)

我能找到的唯一符合要求的是websocket-sharp。但是,令我担心的是,跟踪器中存在sheer number已打开的问题,无法连接的客户端,无效的数据框等等 - 听起来它还不是很成熟。

还有其他符合我要求的候选人吗?或者我错误地认为上面列出的任何库只是客户端/服务器?

3 个答案:

答案 0 :(得分:9)

看看微软的SignalR。 SignalR是围绕websockets的更高级别的抽象。 SignalR还允许客户端使用.NET(C#)编写。来自SignalR documentation

  

SignalR Hubs API使您可以从服务器到连接的客户端以及从客户端到服务器进行远程过程调用(RPC)。在服务器代码中,您可以定义客户端可以调用的方法,并调用在客户端上运行的方法。在客户端代码中,您可以定义可以从服务器调用的方法,并调用在服务器上运行的方法。 SignalR负责处理所有客户端到服务器的管道。

     

SignalR还提供了一个名为Persistent Connections的低级API。有关SignalR,Hubs和Persistent Connections的介绍,或者有关如何构建完整SignalR应用程序的教程,请参阅SignalR - 入门。

答案 1 :(得分:1)

另一个解决方案是使用Edge.js.这是一个使用Node.js的.NET库。您可以让Node.js充当WebSocket通道的服务器和客户端。然后利用Edge.js充当世界,Nodejs和.Net之间的桥梁。看看下面的内容,还有很多样本。 github.com/tjanczuk/edge/tree/master#scripting-clr-from-nodejs。两者都是积极维护的优秀框架。

然而,使用Edge.js确实引入了一个额外的依赖项node.js

答案 2 :(得分:0)

您可以查看WebSocketRPC。该库基于 System.Net.WebSockets ,它是可移植的。此外,它自动生成JavaScript客户端代码并支持ASP.NET Core。 我建议你首先在GitHub存储库中试用样本。

免责声明:我是图书馆的作者。