概述
-
web端即时通讯技术
即时通讯技术简单的说就是实现这一种功能:服务端可以即时的将数据的更新或者变化反应到客户端,例如消息即时推送等功能都是通过这种技术实现的。这种限制出现的主要原因是一般的web通讯都是流浪器先发出请求到服务器,服务器在进行响应完成数据的更新。 -
实现web端即时通讯的方法
实现即时通讯主要有四种方式,它们分别是短轮询、长轮询(comet)、长连接(SSE)、websocket。它们大体可以分为两类,一种是在http基础上实现,其中包括短轮询、comet和SEE;另一种不是建立在http基础上,即websocket。下面分别介绍下这四种轮询方式,以及它们的优缺点:
(1)短轮询
短轮询的基本思路就是浏览器每隔一段时间发送http请求,服务器在收到请求后,不论是否有数据更新,都直接进行响应。这种方式是即时通讯,本质上是浏览器发送请求,服务器接受请求的一个过程,通过让客户端不断的进行请求,使得客户端能够模拟实时的收到服务器的数据。
优点:
简单,易于理解,实现起来也没有什么技术难点。
缺点:
这种凡是由于需要不断地建立连接,严重的浪费浏览器和客户端资源。尤其是在客户端,具体来说如果有数量级较大的人同时基于短轮询应用中,那么每个用户的客户端都会疯狂的相服务器发送http请求,而且不会间断,人数越多服务器压力越大,这是很不合理的。
(2)comet
comet指得是,当服务器收到客户端发来的请求后不会直接进行响应,而是先将请求挂起,然后判断服务器端数据是否有更新。如果有,则进行响应,如果没有数据,则到达一定时间限制(服务器设置)后关闭。
优点:http连接请求较少,节约了资源;
缺点:应为挂起的时间长也消耗了不好资源;
(3)SEE
SEE是HTML5新增的功能,全称为server-sentEvents。它可以允许服务端推送数据到客户端,SEE在本质上就与之前的长轮询和短轮询不同,虽然都是基于http协议的,但是轮训需要客户端发送请求。而SEE最大的特点就是不需要客户端发送请求,可以时间只要服务端数据更新就可以马上发送到客户端。
优点: 不需要建立或者保持大量的客户端服务器的请求,大大节约了资源提升了性能。
(4)websocket
websocket是HTML5定义的新协议,与传统的协议不同,该协议可以实现服务器与客户端之间的全双工通讯。简单来说,首先需要在客户端建立起一个连接,这部分需要http,连接一旦建立,客户端和服务器就处于平等地位。可以相互发送数据,不存在请求和响应的区别。
优点: 实现了双全工通讯;
缺点: 服务器逻辑非常复杂; -
四种通讯方式的对比
从兼容性考虑: 短轮询 > 长轮询 > SEE > websocket;
从性能方面考虑: websocket > SEE > 长轮询 > 短轮询;
网友评论