现有的通信方式主要有,ajax轮询、comet长轮询和comet流方式。
Ajax(轮询):
这是一种最为简单的用以实现信息推送的方式。所谓轮询,指的是逐次向服务器确认是否有发送请求的方法。具体来说,是以Ajax的方式从客户端定期发送请求给服务器,确认服务器状态,通过状态来确定合适的操作。
该方式存在一定的缺陷:一方面,即使服务器没有更新,客户端也会发送请求;另一方面,即使服务器进行了更新,如果客户端没有发出请求,也没办法获知这一更新。
comet(长轮询):
comet指的是在有必要的情况下才从服务器返回响应的方式。长轮询是其中之一。所谓长轮询,是在轮询的基础上稍作更改。对于http通信,在收到了客户端的请求后,服务器会立即返回响应并断开连接。而长轮询,在客户端发来请求是,服务器会保留响应,并维持连接。这样使得可以在任意的时间返回响应,一般是时间结束或者发生更新的时候返回响应。客户端收到响应后会再次向服务器发出连接请求。
该方式,虽然在一定程度上省去了一些不必要的通信,但是还是存在一定的缺陷,一方面要使用长轮询,需要事先在服务器进行设定,将同时连接数设的大一些;另一方面,该方式也需要在一次更新后进行重新连接。
comet(流)---websocket 通信。
该方式,在html5中得以应用。具体来说,通过有客户端发出一个请求,建立连接,并在维持该链接的同时从服务器不断向客户端响应。犹豫服务器端始终处于发送响应的状态,该方式称之为流。
该方式也自身的一些缺陷,比如不断的发送响应,会是页面体积不断增加,有必要在合适的时间进行刷新。
在之后的文章中将会展示websocket通信实例。