论坛首页 Web前端技术论坛

AJAX 反推技术的一点疑问

浏览 16799 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-09-11  
举个例子吧,我有一个页面要可以 即时显示出当前的登陆用户,用长连接,和用长轮询,都应该是怎么一个思路来做?谢谢了
0 请登录后投票
   发表时间:2011-09-11  
squll369 写道
举个例子吧,我有一个页面要可以 即时显示出当前的登陆用户,用长连接,和用长轮询,都应该是怎么一个思路来做?谢谢了

你这需求不合理,当前登录的用户只可能是一个,在他退出以前都不会变,不会变的内容怎么会需要轮询或长链接呢?
0 请登录后投票
   发表时间:2011-09-11  
squll369 写道
举个例子吧,我有一个页面要可以 即时显示出当前的登陆用户,用长连接,和用长轮询,都应该是怎么一个思路来做?谢谢了


我对你需求的理解
1.先完成一个登陆功能,任意输入一个用户名都算登陆成功。
2.在成功页面successful.jsp中将用户名保存到session 范围。
3完成发送的操作方法。建立一个 Message 对象,用来保存发送的消息。
4.建立 AjaxServlet,实现消息的保存功能,建议将消息保存到application 属性范围。
5。在页面的 onload 方法中,加入一个js 的AJAX 调用,判断当前application 范围中是否有我发送的或我接收的消息。
6在 Servlet 中完成验证。
首先取得所有与该用户相关的消息(发送或接收人是当前用户),并放入到List集合中,其次判断集合中的数量是否与上一次验证时相同,如果原始消息数小于新的消息数则提示有新消息,最后将l原始消息数重新设置回去。防止下次验证又输出原有消息。
7.回调函数中显示结果。
0 请登录后投票
   发表时间:2011-09-11  
int08h 写道
squll369 写道
举个例子吧,我有一个页面要可以 即时显示出当前的登陆用户,用长连接,和用长轮询,都应该是怎么一个思路来做?谢谢了

你这需求不合理,当前登录的用户只可能是一个,在他退出以前都不会变,不会变的内容怎么会需要轮询或长链接呢?


不是这个意思,比如,现在 iteye上可以显示所有的在线用户,如果,有一个用户下线了,页面上的在线列表立刻就少了一个人,如果又有一个新用户登录了,在线列表里立刻就加上了一个。
0 请登录后投票
   发表时间:2011-09-12  
squll369 写道
int08h 写道
squll369 写道
举个例子吧,我有一个页面要可以 即时显示出当前的登陆用户,用长连接,和用长轮询,都应该是怎么一个思路来做?谢谢了

你这需求不合理,当前登录的用户只可能是一个,在他退出以前都不会变,不会变的内容怎么会需要轮询或长链接呢?


不是这个意思,比如,现在 iteye上可以显示所有的在线用户,如果,有一个用户下线了,页面上的在线列表立刻就少了一个人,如果又有一个新用户登录了,在线列表里立刻就加上了一个。

如果反应要这么灵敏,那貌似只能用socket吧,页面隐藏一个flex组件做服务端,可以隐藏在一个iframe中,这个页面要求不被刷新,除非整个浏览器都被刷新,当用户登录时服务器记录下所有IP,当在线人数发生改变时,服务器作为客户端给所有未下线IP的发送UDP数据报就行了吧,这样压力会小很多。
0 请登录后投票
   发表时间:2011-09-12  
轮循无非是window.setInterval(fun,time)这些东西。
0 请登录后投票
   发表时间:2011-09-12  
squll369 写道
int08h 写道
squll369 写道
举个例子吧,我有一个页面要可以 即时显示出当前的登陆用户,用长连接,和用长轮询,都应该是怎么一个思路来做?谢谢了

你这需求不合理,当前登录的用户只可能是一个,在他退出以前都不会变,不会变的内容怎么会需要轮询或长链接呢?


不是这个意思,比如,现在 iteye上可以显示所有的在线用户,如果,有一个用户下线了,页面上的在线列表立刻就少了一个人,如果又有一个新用户登录了,在线列表里立刻就加上了一个。

有一定的刷新频率的吧
原理还是不断请求服务器端,刷新客户端的数据
google的gmail最早用的就是ajax技术,数据不断变化
0 请登录后投票
   发表时间:2011-09-12  
长连接的session超时怎么去控制呢
轮询Session也不会超时了
0 请登录后投票
   发表时间:2011-09-12  
嗯。 好贴。 一直也想弄清楚 推技术的原理。
0 请登录后投票
   发表时间:2011-09-13  
轮询常见有2种
1为客户端通过js调用(setTimeout或setInterval),定时向服务端发送http请求、服务端将处理结果返回给客户端
2为客户端通过js发送请求到服务端,服务端通过休眠技术来维持该线程(不是无限,而是根据实际的性能要求定出一个合适的时间),在需要推或者到时间的时候,完成本次请求、客户端根据http返回的指令来进行操作同时继续下一次请求。
印象里还有一种模式,忘了,希望对你有帮助。
0 请登录后投票
论坛首页 Web前端技术版

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