十三、服务器推送
- 服务器主动向客户端推送信息
- 传统的HTTP协议传输,服务器是被动相应客户端的请求
1、解决方案
- ajax轮询、ajax长轮询
- Server-Send-Event
- WebSocket
2、ajax轮询
- 客户端定时向服务器发送请求
- 可能会造成无用的http请求
3、ajax长轮询
- 客户端向服务器发送请求,服务器等到有更新后给出相应。客户端收到更新后在发起新的请求
- 每个请求都有更新结构,没有无用的http请求
- 仍然产生了大量的http链接
十四、Server-Send Event
1、概述
- 基于HTTP协议
- H5新增的API标准
2、客户端EventSource
- 事件
- onpen
- onmessage
- onerror
- 方法
- close()
- 属性
- readyState
- url
3、服务端
-
设置响应头
Content-type:text/event-stream Cache-Control:no-cache Connection:keep-alive
-
内容格式(以 结束, 消息结束符)
data:内容 data:内容
-
字段
-
data
-
event
-
id
-
retry
十五、WebSocket
1、概述
- 真正的实时通信
- 双工通信
- socket协议直接建立在TCP协议上
- 不存在同源策略
2、客户端WebSocket
- 方法
- send()
- close()
- 事件
- onmessage
- onopen
- onerror
3、node.js使用socket模块
- node-websocket
- socket.io
- ws