本文出现在第三方产品评论部分中。在这一部分的文章只提供给会员,不允许工具供应商用来以任何方式和形式来促销或宣传产品。请会员报告任何垃圾信息或广告。
Web项目常常需要将数据尽可能快地推送给客户,必要时无需等待客户端请求。对于与用户之间进行实时通信的网站,例如在线交流或文档协作工具,或者在长期运行的计算/执行任务的服务器上更新系统状态,等等这些时候,采用双向沟通机制是理想的。
以前,这类问题一般使用下面的解决方案:
使用 Flash 中的 Socket 连接(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/Socket.html)
Ajax 长轮询(https://gist.github.com/jasdeepkhalsa/4353139)
服务器发送事件... (http://en.wikipedia.org/wiki/Server-sent_events)
...或者就用 IE 中经典的 Frame 技术(http://cometdaily.com/2007/11/05/the-forever-frame-technique/)
但现在我们有了更好的选择:WebSocket。它的标准在2011年发布,在现代浏览器上已实施了一段时间。它更好的原因是使用更安全和更成熟的协议,带来了改进和升级。
略注:
这份比较是几个月前做的,可能不够及时,但如果有人要找好的WebSocket库,我认为这对他仍然是有用的。
本比较只针对以 NuGet 包形式发布的库, SuperWebSocket 虽然使用 NuGet 的 repository,但需要从网页中下载。
也许等我抽出空来,我会使用新的库或已测试的库的新版本进行比较然后更新这篇文章。
Fleck
https://github.com/statianzo/Fleck
我发现这个库真的是简单易用,对于库、文档、例子等都是,只要添加库,复制几行例子里的代码,然后运行——就这么简单。
但是简单是有代价的:其功能并不强大,且可配置的地方太少。
private static void Main(string[] args) { var server = new WebSocketServer("ws://localhost:8181"); server.Start(socket => { socket.OnOpen = () => OnOpen(socket); socket.OnClose = () => OnClose(socket); socket.OnMessage = m => OnMessage(socket, m); }); }
对于简单快速的项目我会用它,如果你不需要用WebSocket发送太复杂的数据结构、命令一样的消息、或在客户端无WebSocket支持时的备选方式,这就是你要的了。
优点:
简单
无依赖项
缺点:
可配置项少
客户端浏览器不支持WebSocket时就没戏了
SignalR
http://www.asp.net/signalr
微软出品是我认为这个库最大的优点了。它已经和现有的ASP.NET框架做了集成,对服务器端和客户端代码都做了很好的抽象类, 这意味着你不需要太深入了解协议的东西。然后它还可以很聪明地在客户端浏览器不支持WebSocket时自动使用别的通信机制。它还可以完成一些叫远程过程调用(RPC)的东西,从服务器到客户端。
开发包比较-websocket .net">
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索websocket
, 客户端
, 服务器
, socket
, signalr
, 浏览器
, websocket mqtt
, 简单
, nuget
, superwebsocket
, Websocket协议
, websocket协议详解
websocket实时聊天
websocket .net、asp.net websocket、websocket4net、websocket .net服务端、.net core websocket,以便于您获取更多的相关知识。