日期:2014-05-17  浏览次数:21295 次

JAVA怎么样实现即时消息提醒?
JAVA怎么样实现即时消息提醒?

如题,要求性能高。高手帮忙! 
问题补充:说说思路也行,如果有实例就更好。
采用B/S架构。
使用STRUTS+SPRING+HIBERNATE,
就象小秘书的那类即时消息,即:当A向B发送消息后,B收到消息后会有所提示。
这样B就不用实时的打开网页,就可以看到是否有新的任务.

注:不需要B来回复消息,只要B能看到有新消息就可以了.

------解决方案--------------------
及时消息其实并不及时的。。。
都是setInterval + Ajax来实现的,说白了,定时刷。


最后,你真的需要及时消息的话,那么你的服务器必须非常好。
你可以研究一下Comet这个词~
------解决方案--------------------
Ajax了,自己研究了
------解决方案--------------------
Ajax
------解决方案--------------------
也可以用Ifram,分框架,定时小部分刷新!
------解决方案--------------------
ajax,定时刷,就这么简单
------解决方案--------------------
方法有很多,用AJAX监听提交,然后异步提交(Json格式的或XML格式的)数据到页面。
用一个线程,请求进入那个方法体,你就启动那个线程。发个消息到页面,再用js或jQuery、extjs等new个窗体出来显示即可,这里需要考虑是否要加锁,具体看你怎么操作。
------解决方案--------------------
第一,java实现即时消息提醒方法很多。
第二,B/S架构就没办法即时。这是B/S架构本身决定的(请求-响应模式),服务器不会主动推送消息给客户端的。所以只能是客户端定时去向服务器取消息。所以上面大家说的ajax是目前流行的做法
------解决方案--------------------
setInterval + Ajax
------解决方案--------------------
探讨
不想让用户一直开着网页,而是想,采用一个类似于QQ一样的,登录完是放小在状态栏的,有消息时有闪动,然后用户就可以打开看到,

------解决方案--------------------
探讨
引用:
不想让用户一直开着网页,而是想,采用一个类似于QQ一样的,登录完是放小在状态栏的,有消息时有闪动,然后用户就可以打开看到,

楼主这个想法在纯B/S下是不可能实现的,这是由B/S本身据决定的(楼上已经有人作了原因分析)
如果楼主一定要实现类似效果的话,那就肯定得写一个客户端,用来捕获服务端消息,然后再把这个消息弹出来即可.

------解决方案--------------------
搜索了下Comet--

Comet 有时也称反向 Ajax 或服务器端推技术(server-side push)。其思想很简单:将数据直接从服务器推到浏览器,而不必等到浏览器请求数据。听起来简单,但是如果熟悉 Web 应用程序,尤其是 HTTP 协议,那么您就会知道,这绝不简单。实现 Comet 风格的 Web 应用程序,同时保证在浏览器和服务器上的可伸缩性,这只是在最近几年才成为可能。目前一些主流网站都有类似的原理,例如:webQQ、开心网、白社会等等,它们中消息动态都是采用类似的技术,也许具体实现方式不一样
------解决方案--------------------
定时刷新啊,只要不是每秒一次就可以了,我做过5分钟刷新一次。整个系统好像没有什么影响。
其实也就是查一次数据库。
------解决方案--------------------
探讨
第一,java实现即时消息提醒方法很多。
第二,B/S架构就没办法即时。这是B/S架构本身决定的(请求-响应模式),服务器不会主动推送消息给客户端的。所以只能是客户端定时去向服务器取消息。所以上面大家说的ajax是目前流行的做法

------解决方案--------------------
我也去了解了下comet,发现此架构是可以实现楼主的要求的
------解决方案--------------------
写一个方法检查是否有新信息的 (method A)

然后循环递归调用

如果发现有新信息则调用查询信息的方法(method B)
,成功之后再去调用(method A)

------解决方案--------------------
comet就是楼主要的答案,但如果理解了它的原理,这个功能可以自己写,原理:
1、浏览器向服务器发一个请求
2、服务器接到请求后在servlet或struts的Action中用线程将这个请求休眠,使服务器不直接响应结束,这样浏览器与服务器就建立了一个长连接,这是即时通信的基础。
3、设置response的属性,使其可以多次响应,这样只要有人给它消息,就可以out一句话,这句话是个script代码,浏览器就收到消息了。