使用.NET的HTML5 WebSockets客户端

49

我发现了一个很棒的东西叫做HTML5 WebSockets,是一个新的API。虽然它仍处于草案版本,但支持得相当不错。它可以进行全双工的双向通信。我知道如何通过JavaScript来使用它,因为有相关的API。但是如果我想在我的C#/.NET应用程序中使用WebSocket客户端,该怎么做呢?

比如JavaScript:http://bohuco.net/blog/2010/07/html5-websockets-example/

是否存在专门用于.NET的WebSocket客户端库?


4
我不明白为什么这个问题被踩了。在我看来,这是一个完全有效的问题。只是OP没有很好地解释他是想在.NET中实现WebSocket服务器还是其他什么。我给他点了一个赞。 - Darin Dimitrov
14
如果您想编写一个可以让HTML5、Silverlight和其他C#客户端都能够访问的服务器实现,那么这个想法在逻辑上是完全合理的。 - Simon_Weaver
你可能想使用NuGet上提供的Fleck:http://nuget.org/packages/Fleck/ - Matt Cruikshank
10个回答

13

请注意,最新可下载的软件包中未包含客户端实现,请在源代码中查找。 - Kerry Jiang
谢谢提供的信息,我会在几天内研究一下。它支持哪个标准?draft-ietf-hybi-thewebsocketprotocol-04(又名draft-hixie-thewebsocketprotocol-76)吗? - davidlt
是的,这是v76的实现。 - Kerry Jiang
昨天,它发布了Drop 4。http://superwebsocket.codeplex.com/releases/view/62622 - Kerry Jiang
我相当确定他们现在已经放弃了客户端实现。有人能确认一下吗?我甚至在源代码中都找不到它。他们似乎希望我只使用Socket类或“telnet”。 - Simon_Weaver
8
SuperWebSocket中的客户端已分离到一个新项目WebSocket4Net中:http://websocket4net.codeplex.com/ - Kerry Jiang

7

我最近在为Pusher构建.NET和Silverlight客户端库时,对此进行了一些研究。我发现以下WebSocket客户端库和项目:

目前来看,Microsoft实现可能是最容易使用的,它还有一个Silverlight库。SuperWebSockets在源代码中有一个Silverlight项目,但不在最新版本中。


@Simon_Weaver SuperWebSocket的客户端可以在这里找到:链接,你会在左侧看到一个名为'WebSocketClient'的项目/链接。很抱歉我无法直接提供链接。 - leggetter
它在SourceCode/mainline/Client中。 - Kerry Jiang
1
SuperWebSocket中的WebSocket客户端已经变成了WebSocket4Net。http://websocket4net.codeplex.com/ - Kerry Jiang

5

2
必须注意,此功能仅支持Windows 8及以上版本,不支持Windows 7 / Windows Server 2008。引用MSDN页面的话:“System.Net.WebSockets命名空间中支持Windows 7、Windows Vista SP2和Windows Server 2008的类元素是抽象类元素。” - jv42
1
如果这个问题得到解决:https://github.com/dotnet/corefx/issues/9503,那么它也将在Windows 7上得到支持。祈祷吧(似乎只是一个打包的问题)。 - vulcan raven

2
我没有尝试过微软的实现,但我认为Xsockets拥有最快的设置时间(nuget包)。从开始到运行完整的socket服务器+客户端(演示聊天应用程序)不到3分钟。 Youtube演示 它可以回退到Silverlight和Flash以适应旧版浏览器。

2
您可以使用http://www.nuget.org/packages/Microsoft.AspNet.SignalR/http://www.asp.net/signalr。ASP.NET SignalR是一个为ASP.NET开发人员设计的新库,使实时Web功能的开发变得简单。SignalR允许服务器和客户端之间进行双向通信。服务器现在可以即时将内容推送到连接的客户端。SignalR支持Web Sockets,并针对旧版浏览器回退到其他兼容技术。SignalR包括连接管理API(例如,连接和断开事件)、连接分组和授权。

据我所知,SignalR是一个服务器,而不是客户端。 - Tsahi Asher
它不是一个服务器,而是一个库。SignalR允许服务器和客户端之间进行双向通信。 - surya

1
一个朋友和我刚刚发布了一个非常轻量级、精简、可扩展的C# websocket服务器:https://github.com/Olivine-Labs/Alchemy-Websockets 我们构建它是为了在我们的在线游戏中使用,因此我们最关心的是快速高效地处理大量连接。根据我的研究,它是最有效率的。作为额外的奖励,它支持Flash WebSockets作为没有WebSocket启用浏览器的用户的备用方案。

1
它支持哪些协议版本?v00?v06? - davidlt

1

0

是的,您需要一个支持WebSocket协议的中介服务器。这个服务器可以用任何语言编写,包括.NET。这里有一个专为.NET设计的服务器,但实际上它可以是任何语言。就您的网站而言,它可以是ASP.NET,客户端部分使用JavaScript与WebSocket服务器通信。


我在C级别上有实现,虽然我可以从JavaScript中使用它,但我也想从.NET桌面应用程序中使用它。我想从拉模型转向推模型。从服务器向客户端推送新数据。我正在寻找.NET上的客户端API。 - davidlt

0

我正在部署XSockets.net。这个框架运行得非常好,一直在维护更新,开发人员提供付费支持,但对于普通问题,他们在SO上也非常活跃并且提供了很多帮助。

他们提供了一个.NET API来实现套接字,还有一个JavaScript API用于客户端。

总之,我可以推荐它。


-1

正如我之前对Darin提到的,我正在寻找.NET上的客户端API。我已经实现了服务器,但我想不仅在Web开发中使用此API,还要在桌面客户端版本中使用它。到目前为止,它看起来非常适用于Web应用程序,也适用于桌面和移动客户端。 - davidlt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接