传统“长轮询”实现Web端即时通讯的问题
WebSocket出现之前,Web端为了实现即时通讯,所用的技术都是Ajax轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求,然而HTTP request 的header是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽。
而比较新的技术去做轮询的效果是Comet , 但这种技术虽然可达到全双工通信,依然需要发出请求。
WebSocket 技术概览
在 WebSocket API,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送,改变了原有的B/S模式。
WebSocket技术应用的典型架构:
WebSocket的技术原理:
介绍了基础知识,下面开始本文的正文内容:
C# websocket及时通信协议的实现
1:Websocket有java、nodejs、python、PHP、等版本 ,我现在使用的是C3版本,服务器端是Fleck。客户端和服务器端来使用websocket的,下面开始讲解如何使用:
2:在开始之前我们先来看看哪些浏览器支持websocket:
Websocket服务器支持:
3:接下来我们使用的是C#控制台程序来实现客户端直接通信的实施推送第一步服务器端:
打开VS2015 创建项目Webshoufa(如下图)
服务器端示例展示:
打开主程序入库Program.CS
写入主要链接推送代码如下展示
FleckLog.Level = LogLevel.Debug;
var allSockets = new List();<