WebSocket实时通信
-
WebSocket 的诞生是针对于HTTP 协议的缺陷,因为HTTP通信只能由客户端发起,做不到服务器主动向客户端推送信息。而这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用"轮询":每隔一段时候,就发出一个询问,了解服务器有没有新的信息。最典型的场景就是聊天室。
但是轮询的效率低,非常浪费资源,因为轮询需要不停建立连接,或者需要HTTP连接始终保持打开状态。
WebSocket 协议在 2008 年诞生,2011 年成为国际标准。所有浏览器都已经支持了。WebSocket 最大特点就是服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。
WebSocket 和 HTTP协议一样属于应用层协议,WebSocket 也是建立在TCP 协议之上,服务器端的会更容易实现。
WebSocket 与 HTTP 协议有着良好的兼容性。WebSocket 默认端口也是 80 和 443,第 1 次建立连接时采用 HTTP 协议,因此连接时不容易屏蔽,还能通过各种 HTTP 代理服务器。并且WebSocket 数据格式比较轻量,性能开销小,通信高效。支持发送文本,也可以发送二进制数据。
更优越的一点在于WebSocket 没有同源跨域限制,客户端可以与任意服务器通信。WebSocket 不是用来代替 HTTP 的,它是用来解决实时通信的业务场景。如果业务不需要实时性,那就没必要使用 WebSocket。
西南地区IT社群(QQ)
- 云南
- 【昆明网页设计交流吧】243627302
- 【昆明nodejs交流吧】 243626749
- 【VUE】838405306
- 【云南程序员总群】343606807
- 【昆明UI设计】104031254
- 【云南软件外包】15547313
- 贵州
- 【PHP/java源码/站长交流群】55692114
- 四川
- 【成都Java/JavaWeb交流】86669225
- 【vaScript+PHP+MySql】116270060
- 【UI设计/设计交流学习群】135794928
- 重庆
- 【诺基亚 JAVA游戏博物馆】 559479780
- 【PHP,Java,Python,C++接单】 442103442
- 西藏