服务器推技术

 什么是服务器推技术 通常情况下,浏览器跟服务器的交互,都是由浏览器发起一个request, 服务器马上返回一个response, 这个看起来就像是浏览器从服务器拉了一个响应回来, 所以叫pull。 如果服务器可以主动的给客户端发送一个响应, 就像是服务器推了一个响应给客户端, 这种情况叫做push。 服务器推技术就是讲服务器如何实现向客户端push 信息。 2. 怎么实现服务器推技术 服务器要主动给客户端发送信息, 那么首先必然要建立起从客户端到服务器的连接并保持之, 从实现方式可分为2种 1. 借助外部控件,直接使用socket连接到服务器 浏览器可以借助插件/控件, 比如java的applet, 或者是flash, 可以直接建立起到服务器端的socket。 这种实现方式最简单,前提是浏览器要支持applet或者是flash, 它还有一个缺点就是, 因为通常情况下socket是连接到服务器的非80端口, 如果中间有防火墙屏蔽了非80端口, 那么这种方式将无法使用。 2. 不借助外部控件,直接让浏览器发起HTTP请求,并保持这个连接。 这种方式有个术语,叫comet. 这种方式一般又可分为2种: 基于HTTP流 保持一个永久的HTTP连接, 服务器在有需要的时候把信息流发送给客户端 这种方法是有前提或者缺点的,

    • 服务器到客户端的连接不能超时, 事实上我们常用的apache都会有超时设置
    • 浏览器要有能处理流数据的能力。 很多时候下浏览器会等待整个响应结束才会开始处理数据,而且中间的proxy服务器经常会等响应结束才会把数据传给客户端。
    • 容易产生僵尸连接

即使是客户端主动断掉连接,但是如果有中间proxy的存在,proxy可能会缓存这个连接, 导致Proxy到服务器端的连接并没有断掉,这样服务器就存在很多僵尸连接。 long polling 客户端发起一个请求, 服务器收到后如果有信息要发给客户端则马上发送, 如果没有这进入阻塞状态直到有信息要发送给客户端,客户端从服务器收到信息后, 马上重新向服务器建立新连接, 如此循环之。 这种实现方式当然也有连接不能超时的前提,但是它已经没有了Proxy缓存连接导致僵尸连接的缺点,也不需要客户端具备流处理的能力。因为它就像是普通的request-response方式, 只是response的时间可能会长一点而已。 3. 服务器推技术能有什么应用 客户端需要实时知道服务器发生的事件的时候,就可以使用服务器推技术。比如:

  • 监控系统:后台硬件热插拔、LED、温度、电压发生变化;
  • 即时通信系统:其它用户登录、发送信息;
  • 即时报价系统:后台数据库内容发生变化;
  • web game, chatroom等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值