WebSocket是HTML5标准中的一部分,可以单TCP连接上进行全双工通讯协议。服务端可以主动给客户端推送数据,使整个通讯更快的快捷、方便。

本次介绍2个比较推荐的库

Signalr与SuperWebsocket,其他像基于TCP协议自己封装,现在选择这个方式的已经非常稀少了,可能在某些特殊场景或对性能有需求的项目中能看到。

一、.NET自带的Signalr

系统:Windows、Linux

兼容了4种通讯方式

1.WebSocket协议

2.Forever Frame:永久帧 在页面中增加一个iframe利用这个html框架与服务器进行交互。

3.Sever Sent Events:用于浏览器端,向服务器发送事件通讯。

4. Long Polling:长轮询,这个是对轮询的改进,客户端请求连接到服务器,服务端不返回数据并保持一段时间的连接状态,直到消息更新或超时才返回Response并中止连接,可以有效减少无效请求的次数。

自带的有两种模式:永久连接模式(PresistentConnection)和中心模式(Hubs)。推荐使用Hubs模式,如有需要也可以使用永久连接模式这个更偏向底层需要自己开发更多的功能。

另外.NET Core中的Signalr相对于此前版本做了升级与增强且可跨平台运行。

二、SuperWebsocket库

系统:Windows、Linux(基于Mono)

SuperWebSocket 是一个基于SuperSocket开发的WebSocket服务器轻量级、高性能,相对于Signalr对服务器版本没有过多的要求。目前已经做为一个模块加入了SuperSocket库。

这个只有Websocket协议,适合于做C/S应用,用于Web项目的话就不要再考虑兼容旧浏览器了。

总结:

这两个库性能都不错,根据自己的项目需求进行选择。

如果做的是Web类的项目,使用.NET自带的Signalr库会更方便些,常用到长轮询和WebSocket方式进行通信,如类似于微信的扫码登录。

如果做的是C/S类的应用,如桌面程序、手机应用只使用WebSocket的话推荐使用SuperWebsocket库。

两个库都适用于B/S和C/S项目,只是兼容的协议不同,示例和应用都比较多。