.NET WebSocket客户端和服务器库

Pav*_*aev 10 .net c# websocket

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

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

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

我能找到的唯一符合要求的是websocket-sharp.然而,令我担心的是,跟踪器中无法连接的无线连接,无效的数据帧等问题仍有大量未解决的问题 - 听起来它还不是很成熟.

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

Jar*_*tra 10

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

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

SignalR还提供称为持久连接的低级API.有关SignalR,集线器和持久连接的介绍,或有关如何构建完整SignalR应用程序的教程,请参阅SignalR - 入门.


Don*_*Don 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