【精品】服务器推送技术

2017/11/05 - 计算机网络

服务器推技术

1、基于Socket的全双工通信(TCP、UDP)【推荐】。

2、普通轮询:客户端不断拉取,造成“推的假象”。这种方式相对简单,但是不够实时,且大部分请求是毫无意义的,浪费性能(不管是客户端还是服务器),需要在实时性和性能方面做权衡。

3、长轮训:HTTP长轮训。长轮询的核心是在服务端的hold请求,直到有数据或者超时才返回。而对于客户端,长轮询和普通轮询其实是没什么区别的(长轮训对客户端来说是同步请求,对于服务器是异步返回)。但可以减少客户端轮询次数且兼顾了实时性。不过服务器hold请求requset会消耗一定资源,占用很大内存。(Comet就是tomcat的长轮训实现)

Servlet3.0的异步特性给服务器实现长轮训提供了基础。服务器收到请求后可以hold住跟客户端的链接,保存在上下文,然后释放容器的线程,减轻了负担。但hold住链接扔需要消耗服务器资源,且需要额外维护异步操作的线程池去进行耗时的操作,直到返回响应给客户端。

http://www.cnblogs.com/davenkin/p/async-servlet.html

https://www.ibm.com/developerworks/cn/java/j-lo-comet/

其他类似名词的解析

以下两个名词特别容易跟长轮询混淆,希望读者注意。

  • HTTP短连接:一个请求后对应一个响应,底层通过tcp建连,一次请求结束后断开链接。
  • HTTP长连接:区别在于请求、响应逻辑执行完后不是是立即关闭(短连接),而是保持连接,让下一次请求可以复用这个信道。

如果文章对您有帮助,欢迎扫描下方二维码赞助(一分也是爱噢),谢谢

Search

    一分也是爱噢 一分也是爱

    目录