.NET 的 HTML5 WebSockets 客户端

Posted

技术标签:

【中文标题】.NET 的 HTML5 WebSockets 客户端【英文标题】:HTML5 WebSockets Client for .NET 【发布时间】:2011-06-26 12:25:16 【问题描述】:

所以, 我发现了一个神奇的东西,叫做 html5 WebSockets,新的 API。这仍然是 DRAFT 版本,但得到了很好的支持。全双工双向通信。我知道如何通过 javascript 使用它,有 API。但是如果我想在我的 C#/.NET 应用程序中使用 WebSocket 客户端,该怎么做呢?

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

.NET 中是否有任何特殊的 WebSocket 客户端库?

【问题讨论】:

我想知道为什么这个问题被否决了。对我来说,这似乎是一个完全有效的问题。只是 OP 并没有很好地解释他是否正在寻找在 .NET 中实现 WebSocket 服务器或其他东西。来自我的 +1。 这完全合乎逻辑。如果您想编写一个 HTML5 和 Silverlight 其他 C# 客户端都可以访问的服务器实现,那么 您可能想要使用 Fleck,在 NuGet 上可用:nuget.org/packages/Fleck 【参考方案1】:

是的,您需要一个支持WebSocket protocol 的中间服务器。该服务器可以用任何语言编写,包括 .NET。 Here's one 用于 .NET,但它实际上可以是任何语言。就您的站点而言,它可能是 ASP.NET 和 javascript 中的客户端部分,它将与 WebSocket 服务器通信。

【讨论】:

我有 C 级实现,虽然我可以在 JavaScript 中使用它,但我也想在 .NET 桌面应用程序中使用它。我想从拉模型转移到推模型。将新数据从服务器推送到客户端。我正在寻找 .NET 上的客户端 API。【参考方案2】:

你有几个选择

自行开发 - 规范相当简单 使用别人的实验版,比如这个C# Web socket server 查看MS WCF approach

【讨论】:

正如我为 Darin 提到的,我正在寻找 .NET 上的客户端 API。我已经实现了服务器,但我不仅想在 Web 开发上使用这个 API,还想在桌面客户端版本上使用这个 API。到目前为止,它看起来非常适合用于网络应用,也适用于桌面和移动客户端。【参考方案3】:

先生 SuperWebSocket 包括一个 WebSocket 服务器实现和一个 WebSocket 客户端实现。 SuperWebSocket's project page

【讨论】:

注意,客户端的实现并没有包含在最新的下载包中,请在源码中找到。 感谢您的信息,过几天会调查一下。它支持哪个标准? Draft-ietf-hybi-thewebsocketprotocol-04(又名 Draft-hixie-thewebsocketprotocol-76)? 是的,它是一个 v76 实现。 昨天,它发布了 Drop 4。superwebsocket.codeplex.com/releases/view/62622 SuperWebSocket中的客户端已经分离到一个新项目WebSocket4Net:websocket4net.codeplex.com【参考方案4】:

我刚刚发布了一个非常轻量级、精简、可扩展的 C# websocket 服务器的朋友:https://github.com/Olivine-Labs/Alchemy-Websockets

我们构建它是为了在我们的在线游戏中使用它,因此我们最关心的是快速有效地处理大量连接。根据我的研究,它是最有效的。而且,作为奖励,它支持 Flash websockets 作为没有启用 websocket 浏览器的用户的后备。

【讨论】:

它支持哪些协议版本? v00? v06?【参考方案5】:

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

Microsoft WebSocket client prototype SuperWebSocket 注意:那里有一个客户,很难找到 WebSocket-Sharp Anaida

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

【讨论】:

@Simon_Weaver 可以在here 找到 SuperWebSocket 客户端,您会在左侧看到一个“WebSocketClient”项目/链接。恐怕我无法直接链接到它。 在SourceCode/mainline/Client中 SuperWebSocket 中的 WebSocket 客户端已经变成了 WebSocket4Nethttp://websocket4net.codeplex.com/【参考方案6】:

我没有尝试过 Microsoft 实现,但我认为 Xsockets 的设置时间最快(nuget 包)。从开始到运行完整的 socketserver + 客户端(演示聊天应用程序)不到 3 分钟。 Youtube demo

它已回退到 Silverlight 和适用于旧版浏览器的 flash。

【讨论】:

【参考方案7】:

如果您正在寻找高性能的企业 WebSocket 服务器,请查看Kaazing。 Kaazing 完全支持 .NET,包括 Xamarin。

这里是 AMQP 的分步教程:Checklist: Build Microsoft .NET AMQP Clients。

[披露:我为 Kaazing 工作。]

【讨论】:

【参考方案8】:

您可以使用http://www.nuget.org/packages/Microsoft.AspNet.SignalR/ 或http://www.asp.net/signalr

ASP.NET SignalR 是一个面向 ASP.NET 开发人员的新库,可以轻松开发实时 Web 功能。 SignalR 允许服务器和端之间的双向通信。服务器现在可以在内容可用时立即将内容推送到连接的客户端。 SignalR 支持 Web 套接字,并回退到旧浏览器的其他兼容技术。 SignalR 包括用于连接管理(例如,连接和断开事件)、连接分组和授权的 API。

【讨论】:

AFAIK,SignalR 是服务器,而不是客户端。 它不是服务器,而是库。 SignalR 允许服务器和客户端之间的双向通信【参考方案9】:

我正在部署 XSockets.net。该框架运行良好,正在维护中,开发人员提供付费支持,但对于正常问题,他们在 SO 中也非常活跃,他们提供了很多帮助。

他们提供了一个用于实现套接字的 .net API 以及一个用于客户端的 javascript API。

作为总结,我可以推荐它。

【讨论】:

【参考方案10】:

从 .NET 4.5 开始,通过 System.Net.WebSockets.ClientWebSocket 支持 WebSocket 客户端

您可以从 MSDN 代码网站:http://code.msdn.microsoft.com/WebSockets-middle-tier-5b2972ce/sourcecode 浏览或下载此示例 C# 应用程序。

对于该问题的反对者,该示例主要关注连接到 WebSocket 服务,这是以网络为中心的 C# 应用程序的另一个重要用例。

【讨论】:

必须注意这在 Windows 8 及更高版本上受支持,而不是在 Windows 7 / Windows Server 2008 上。引用 MSDN 页面:“支持的 System.Net.WebSockets 命名空间中的类元素在 Windows 7、Windows Vista SP2 和 Windows Server 2008 上是抽象类元素。” 是的,如果此票证得到解决:github.com/dotnet/corefx/issues/9503,那么它也将在 Windows 7 中得到支持。手指交叉(似乎只是包装问题)。

以上是关于.NET 的 HTML5 WebSockets 客户端的主要内容,如果未能解决你的问题,请参考以下文章

用于asp.net MVC聊天应用程序的signalR vs html5 websockets

HTML5 websockets vs PHP websockets vs node.js websockets?

HTML5 websockets:打开连接的最大数量?

HTML5 Websockets 服务器要求

我可以将 HTML5 WebSockets 用于通常使用 AJAX 完成的任务吗?

是否有 HTML5 WebSockets 的 Java 小程序实现?