论坛首页 Java企业应用论坛

服务器推送技术 与 长连接资源浪费 问题探讨

浏览 7606 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-06-07  
Pushlet 技术实现,服务器推送,客户端定时监听。

因为涉及到读数据库,如果频率比较高,我个人觉得可以把数据缓存,客户端定时监听时读缓存数据,如果有新数据更新,可以写入缓存。
0 请登录后投票
   发表时间:2013-06-08  
请问下客户端监听,在java有什么相关技术可以实现,请提供参考!
0 请登录后投票
   发表时间:2013-06-08  
有好几种模式的, 最完美的当然是WebSocket,但是服务器、客户端都要求比较新。
如果满足不了, 相对简单并及时的方式是 CometD模式, 即客户端向服务器端建立长连接, 服务器端挂着, 等到有内容才返回内容, 但是标准的请求-响应模型(和WebSocket的区别)。

详情你可参考下:
http://www.ibm.com/developerworks/cn/views/web/libraryview.jsp?view_by=search&sort_by=Date&sort_order=desc&view_by=Search&search_by=%E5%8F%8D%E5%90%91+Ajax+%E9%83%A8%E5%88%86&dwsearch.x=14&dwsearch.y=15
0 请登录后投票
   发表时间:2013-06-27  
对浏览器没有要求的话.
  尝试下websocket.
    可以解决你的问题。
0 请登录后投票
   发表时间:2013-07-02  
如果想要实现方式,推荐两种我用过的:
1. pushlet 框架, java中的实现。依赖HttpServlet.
2. node.js + socket.io模块
之前用的pushlet,后来给予node.js自己写了一个简单的服务:
node.js 服务器端
https://github.com/lvjian700/node-pusher
java 客户端:
https://github.com/lvjian700/pusher4j
iOS 客户端最近会出

关于服务器推送的解决方案:
第一种,最传统的轮训(polling)。轮训也分两种:
1. 定时ajax轮训,或者定时iframe轮训(这个好懂不解释了)
2. 一定策略的轮训:
基于定时轮训,如果多次轮训没有查询到数据,之后增加轮训间隔时间。一旦有数据反馈,轮训间隔回复到正常值
(适合邮件类的应用)

第二种,pulling
使用ajax请求模拟长连接。 请求一次服务器,服务器返回后立刻发次下一次请求。
在请求时带上keep-alive参数。(HTTP 1.1规范默认使用keep-alive)

这类框架:
pushlet
DWR

第三种, HttpStream:
ajax请求的时候,responseStatus=3的时候开始接受数据。(在我调研的时候IE8不支持, IE8之后浏览器没试过)
支持的浏览器:
Safari, Chome, Firefox.

第四种, FlashSocket/Applet/ActiveX
内嵌插件实现socket链接。

2012 ruby conf china 叶丁丁分享的Realtime很棒,推荐阅读:
https://speakerdeck.com/sishen/real-time-web








0 请登录后投票
   发表时间:2013-07-03   最后修改:2013-07-03
楼上这哥们写的方案真不少啊,如果楼主项目中的浏览器能支持HTML5、web服务器能支持web socket规范的那用web socket也不错,我前段时间写过一个例子。http://tyrion.iteye.com/blog/1868654
0 请登录后投票
   发表时间:2013-07-03  
Tyrion 写道
楼上这哥们写的方案真不少啊,如果楼主项目中的浏览器能支持HTML5、web服务器能支持web socket规范的那用web socket也不错,我前段时间写过一个例子。http://tyrion.iteye.com/blog/1868654

以前研究的时候顺带都了解了。
每种推送方式试用场景不同。

之前很难想象Twitter Web页面竟然用的轮询。
但是Twitter API 提供的是 HTTP Streaming。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics