前端开发网络传输之webSocket:为什么需要webSocket?

why websocket ?

  1. html5特点: 更加便于创建更加现代时尚、响应式的web应用程序
  2. html5 通信模式: websocket、服务端信息推送(SSE, server-send Event)、跨文档传信(cross-document messaging)

模式之间的较量

  1. 服务端信息推送(SSE, server-send Event): 只支持单向的通信,只支持服务端向客户端推信
  2. 跨文档传信(cross-document messaging): 可以跨源进行通信,但是它只专注于windows, tabs, and iFrames之间的通信,但是满足不了复杂的通信
  3. websocket: 满足复杂通信、支持双向通信

HTTP/1.0 和HTTP/1.1 效率底下的关键点

  1. HTTP 设计目的:用于文档的传输,满足不了我们现代桌面应用程序的复杂交互需求
  2. HTTP 协议数据传输需要更多的附带信息

HTTP 的特点

  1. 非双向通信:一次通信只支持一个方向的数据传输,客户端向服务端发送数据或者服务端向客户端发送数据,一个完整的通信需要两次HTTP通信才能完成
  2. 用户需要获得实时数据,必须不断的刷新页面或者使用轮询模拟推送技术例如Comet(延迟了服务端的响应)
    • 轮询: 客户端定时定向的向服务端发送请求查询消息,不管有无消息服务端都会响应,当服务端没有消息时,会发送关闭响应,客户端即关闭连接。但是定时请求不能满足服务端消息的实时性
    • 轮询非常适用于固定时间间隔的消息获取,但是得频繁的开启、关闭连接
    • 长轮询: 客户端与服务端建立一个保持一段时间的连接;原理:hanging-GET, pending-POST,直到服务端有消息返回或者设定的时间到时
    • 长轮询也没有在性能方面有显著的提升
    • 流(streaming):父页面创建一个隐藏的 iframe ,当服务端有数据传输给iframe然后回调夫页面的函数达到实时刷新数据;但是会受代理和防火墙阻拦的限制。

WebSocket特点

优点
1. 双向的通信
2. 无跨域问题
3. 实时数据传递
4. 一次握手实现
5. 节省带宽、CPU、降低延时,是性能的革新

缺点
6. 无需太多的通信附带信息
7. 无内置断开重连,需要自行设置
8. 无内置心跳监测,需用户根据需求设置

基本特点
9. 基础的网络协议,可以在其基础上创建其他标准协议

WebSocket 常见的库

  1. Socket.IO
  2. WebSocket Gateway
上一篇
下一篇