服务器推送技术

想要实现服务器推送功能,这里整理了一些可用的方法。


客户端与服务器长时间保持通信的技术:

1.不使用HTTP:HTML 5 新增的 WebSocket 规范

2.使用 HTTP :主要是简易轮询、COMET 技术和 HTML 5 服务器推送事件


comet:

COMET 技术改进了简易轮询的缺点,使用的是长轮询。长轮询的方式在每次请求时,服务器端会保持该连接在一段时间内处于打开状态,而不是在响应完成之后就立即关闭。这样做的好处是在连接处于打开状态的时间段内,服务器端产生的数据更新可以被及时地返回给浏览器。当上一个长连接关闭之后,浏览器会立即打开一个新的长连接来继续请求。不过 COMET 技术的实现在服务器端和浏览器端都需要第三方库的支持。

http://blog.csdn.net/u014386474/article/details/51767273

comet4j:

https://www.2cto.com/kf/201408/323658.html

pushlet:

http://blog.csdn.net/z69183787/article/category/2275667

cometD:

http://abentotoro.blog.sohu.com/203996578.html

https://docs.cometd.org/current/reference/#_preface

http://www.cnblogs.com/tonyY/p/4756223.html

http://hsabby.iteye.com/blog/1924974

Atomasphere:

https://github.com/Atmosphere/atmosphere

https://github.com/AndreasKl/springboot-angular-atmosphere-quickstart

https://github.com/Atmosphere

drw:

http://www.cnblogs.com/hoojo/archive/2011/06/08/2075201.html


Html5 SSE:

Server-sent Events 规范是 HTML 5 规范的一个组成部分。主要有两个部分:第一个部分是服务器端与浏览器端之间的通讯协议,第二部分则是在浏览器端可供 JavaScript 使用的 EventSource 对象。通讯协议是基于纯文本的简单协议。服务器端的响应的内容类型是“text/event-stream”。响应文本的内容可以看成是一个事件流,由不同的事件所组成。每个事件由类型和数据两部分组成,同时每个事件可以有一个可选的标识符。不同事件的内容之间通过仅包含回车符和换行符的空行(“\r\n”)来分隔。每个事件的数据可能由多行组成。

https://www.ibm.com/developerworks/cn/web/1307_chengfu_serversentevent/

http://wiki.jikexueyuan.com/project/html5/sse.html

https://spring.io/blog/2017/03/08/spring-tips-server-sent-events-sse

https://golb.hplar.ch/p/Server-Sent-Events-with-Spring


Websocket:

新的网络通信协议,建立在 TCP 协议之上,与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。能够使得服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话。

Javascript API编写WebSocket客户端:

只需调用 WebSocket 构造函数即可打开 WebSocket 连接,一般使用socket.io库:

var connection = new WebSocket('ws://html5rocks.websocket.org/echo', ['soap', 'xmpp']);

WebSocket 的服务器端:

 Node :

µWebSockets

Socket.IO

WebSocket-Node

Java:

Jetty


http://www.ruanyifeng.com/blog/2017/05/websocket.html

https://socket.io/

https://github.com/eidheim/Simple-WebSocket-Server

https://developer.mozilla.org/zh-CN/docs/Web/API/WebSockets_API/Writing_a_WebSocket_server_in_Java

http://colobu.com/2015/02/27/WebSockets-tutorial-on-Wildfly-8/

https://www.html5rocks.com/zh/tutorials/websockets/basics/


ActiveMQ ajax:

结合消息中间件,客户端直接请求mq。ActiveMQajax特性是由客户端的 amq.js脚本提供的。从ActiveMQ 5.4开始,该脚本利用三个不同的适配器中的一个来支持与服务器的通信。流行的jQueryPrototype以及Dojo都是被支持的,并且这三个库的比较新的版本都随ActiveMQ发布了。

http://blog.csdn.net/u013755987/article/details/60960618

http://activemq.apache.org/ajax.html

https://www.npmjs.com/package/amq-ajax-client

http://blog.csdn.net/u010967382/article/details/28641407

https://www.oschina.net/question/23734_10518

http://www.oschina.net/question/1024469_103878

http://www.voidcn.com/article/p-ruejdoui-nn.html


Vert.x:

Vert.x基于全异步Java服务器Netty,是 Reactor模式的Java实现,JVM上的NodeJS替代者。利用了Initiation Dispatcher组件,把耗时的IO操作事件注册到Initiation Dispatcher组件,耗时IO 操作由其它线程执行,IO执行完成后通知Initiation Dispatcher,再回到 Http Handler执行。支持TCP、HTTP、Websocket等模块。

http://www.csdn.net/article/2015-05-20/2824733-Java

https://github.com/eclipse/vert.x

https://github.com/vert-x3/vertx-examples
https://github.com/Atmosphere/atmosphere-vertx


参考链接:

https://stackoverflow.com/questions/5195452/websockets-vs-server-sent-events-eventsource

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值