服务端推送技术

来源:互联网 发布:充值系统源码php 编辑:程序博客网 时间:2024/05/29 02:37

实现服务端推送的主要技术有: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

  

 

0 0
原创粉丝点击