以往在浏览器中通过http仅能实现单向的通信,即request-response,为了达到双向通讯的效果,最常用的就是长轮询(定时器+ajax),但是它的缺点是浪费带宽资源。
WebSocket使用ws/wss协议,最初在HTML5规范中被引用为TCP连接,它实现了浏览器与服务器全双工(full-duplex)通信。
理论部分不详说,自行百度,简单的告诉你就是双向实时通讯,能针对个人、全体发送消息(典型应用聊天室)。
之前自己学习websocket的时候百度过不少帖子,都感觉比较零散,无法系统学习,所以花了点时间先研究了一二,后面会陆续提供源代码。
目前我看到的websocket的实现有三个版本
1.原生的websocket,最原始的实现方式。
2.带socket.IO的实现方式(不是所有的浏览器支持websocket,socket.io封装了websocket,同时包含了其它的连接方式,比如Ajax。)
3..Net环境提供的SignalR框架(未正式集成到.net平台,需要在Nuget自行安装),原理是使用了代理对象。
websocket的运行跟IIS环境有关系,听说至少是IIS8。
个人是C#开发,亲测在原生websocket程序可以在Win10上正常运行(IIS10),在Win7上不可以运行报错。
报错内容是Error during Websocket handshake:Unexpected response code:200