Websocket protocol是html5一种新协议,实现了浏览器与服务器full-dulpex, 一开始的握手需要http请求完成。
原理:
websocket同http一样也是应用层协议,但是一种双向的通信协议,建立在tcp之上的。
连接过程:
浏览器、服务器建立tcp连接,三次握手。通信的基础,传输控制层,若失败后续不执行。
tcp连接成功后,浏览器通过http协议向服务器传送websocket支持的版本号等信息。(开始前的http握手)
服务器收到客户端的握手请求后,采用http协议回馈数据。
收到连接成功的消息后,通过tcp通道进行传输。
目的:
实现即时通讯,替代轮询或者comet技术。
技术对比:
技术名称
http请求非持久化,单向网络协议,建立后只允许浏览器向服务器发送请求后,服务器才能反馈相应的数据。
劣势:
不能保证消息的时效性,新的工单信息不能即时看到
增加运维成本
轮询轮询在特定的时间间隔,由浏览器向服务器发送request,然后将数据返回给浏览器,解决了消息的时效性问题,但需要每一个客户端每秒向服务发送请求。
劣势:
Http request的header非常长,为了传输小数据,付出代价太大,不合算,占用较多宽带。
websocket只需要服务器和浏览器通过http协议进行一个握手动作,单独建立一条tcp的通信进行数据传输。
优势:
保证消息的时效性
优化资源利用
减轻后台某些系统的运维成本。
建立的tcp通信通道,可以看到系统当前在线人数多少
办公协同工具必须用到的。
劣势:websocket不稳定