websocket 简析
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
Http 协议有一个严重的缺陷:通信只能由客户端发起,服务端被动响应。
Websocket 的特点:是一种属于服务器推送技术,服务器可以主动向客户端推送信息,反过来客户端也可以主动向服务器发送信息,是真正的双向平等对话。
Websocket 协议与 Http 协议,有一定的交集,主要体现在 Websocket 借用了 HTTP 的协议来完成一部分握手。
没有使用 Websocket 的情况下,可以达到相同的效果吗?
有两种方式,一种是长轮讯,一种是 AJAX 轮询。
AJAX 轮询
AJAX 轮询就是定时发送请求,也就是普通的客户端与服务端通信过程,只不过是无限循环发送,这样,可以保证服务端一旦有最新消息,就可以被客户端获取。
长轮询
长轮询是客户端和浏览器保持一个长连接,等服务端有消息返回,断开。然后再重新连接,也是个循环的过程,无穷尽也。客户端发起一个长轮讯,服务端如果没有数据要返回的话,会 hold 住请求,等到有数据,就会返回给客户端。客户端又会再次发起一次长轮讯,再重复一次上面的过程。
版权声明: 本文为 InfoQ 作者【风翱】的原创文章。
原文链接:【http://xie.infoq.cn/article/768cdea01a75aef483ac8b801】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论