转载自 http://www.ruanyifeng.com/blog/2017/05/websocket.html
WebScoket是应用层协议
起因问题: http协议发完消息自动关闭, 只有客户端能访问服务器, 服务器没办法给客户端推送消息
解决办法:
1.轮询: 在特定的的时间间隔(如每1秒),由客户端对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览
2.长轮询: 服务器如果没有最新的消息先不响应, 拖延一定时间再响应客户端
新的问题:
轮询耗费资源! HTML5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。
- WebSocket是一种在单个TCP连接上进行全双工通信的协议,
- 使用80,443(http,https)端口,兼容HTTP。ie10以上支持
- WebSocket 建立连接后不会自动关闭, 需要一方主动关闭。
- 允许服务端主动向客户端推送数据。浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
- 协议标识符是
ws
(如果加密,则为wss
),服务器网址就是 URL。
ws://xxx.com:80/wsapi
wss://xxx.com:443/