服务端推送技术

本文介绍了服务端推送的各种技术,包括Comet、WebSocket、SSE和Bayeux protocol。Comet技术包括隐藏的iframe streaming、XHR streaming和long polling。WebSocket提供双向通信,SSE为单向。Bayeux protocol基于Comet,常见实现有CometD和Faye。WebSocket的实现如Jetty和Nginx,以及辅助技术如SockJs和Socket.io。在构建推送系统时,要考虑并发连接和移动客户端网络不稳定性,可能需要心跳机制和消息中间件如activemq、rabbitmq。此外,还提到了SPDY和XMPP等技术在特定场景的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现服务端推送的主要技术有:Comet,WebSocket、SSE(Server Send Events)、Bayeux protocol。

   

Comet技术细分

  • 隐藏的iframe streaming,依赖浏览器行为,(可能导致浏览器一直显示加载中,用户体验差)
  • XHR streaming,依赖浏览器行为
  • XHR long polling(同源限制,不能访问其他站点)
  • script tag long polling,可以跨站,实现复杂

   

SSE是单向的,而WebSocket是双向的。

   

Bayeux protocol基于Comet-mechanism,支持streaming和long polling

基于Bayeux protocol的实现有CometD、Faye.

   

WebSocket的握手基于upgrade HTTP连接

   

Jetty8+,Nginx支持WebSocket,另外一些技术有SockJs, Socket.io等(都有客户端和服务端实现)。

   

实现服务端推送系统时,需要考虑的问题有:并发连接、移动客户端的网络不稳定问题等。

   

并发连接的处理

  • 高并发服务器,如Nginx,Jetty, Nodejs
  • 集群部署时,注意client-server连接映射的维护,后端需要将消息推送到client连接的服务器。

   

针对移动客户端的网络不稳定问题,可能需要客户端心跳。不论什么客户端,为了应对NAT,client可能需要心跳。

   

另外,通过消息中间价系统如activemq、rabbitmq结合STOMP协议(可能基于websocket)、amqp协议(例如amqp.js, node-amqp)等可以实现pub/sub。

   

使用Adobe Flash 和后端简历 TCP连接,在Javascript的控制下进行双向通信。需要注意的是防火墙的问题。

   

SPDY的服务器启动流特性,也可以用于消息推送。

   

对于IOS、android等手机客户端可以考虑使用XMPP、ampq协议等。

   

 参考资料

http://www.slideshare.net/PeterREgli/comet-websockets-html5

http://en.wikipedia.org/wiki/Push_technology

   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值