今天所说的websocket是个文本协议,还是二进制协议呢?
(一)websocket协议概述
假设我们要实现一个WEB版的聊天室可以采用哪些方案?
1.Ajax轮询去服务器取消息
客户端按照某个时间间隔不断地向服务端发送请求,请求服务端的最新数据然后更新客户端显示。这种方式实际上浪费了大量流量并且对服务端造成了很大压力。
2.Flash XMLSocket
在 HTML 页面中内嵌入一个使用了 XMLSocket 类的 Flash 程序。JavaScript 通过调用此Flash程序提供的套接口接口与服务器端的套接口进行通信。JavaScript 在收到服务器端以 XML 格式传送的信
息后可以很容易地控制 HTML 页面的内容显示。
- 以上方案的弊端
Ajax 轮询:
- Http为半双工协议,也就是说同一时刻,只有一个方向的数据传送。
- Http消息冗长,包含请求行、请求头、请求体。占用很多的带宽和服务器资源。
- 空轮询问题。
- 政府项目直接用ajax,别搞那么复杂,它不存在并发问题。
Flash XMLSocket
- 客户端必须安装 Flash 播放器,而且浏览器需要授权。
- 因为 XMLSocket 没有 HTTP 隧道功能,XMLSocket 类不能自动穿过防火墙。
- 因为是使用套接口,需要设置一个通信端口,防火墙、代理服务器也可能对非 HTTP 通道端口进行限制。
为了解决上述弊端,Html5定义了WebSocket协义能更好的节省服务器资源和宽带达到实时通信的目的。
- webSocket 协议简介
webSocket 是html5 开始提供