猿问

请问各位大神有没有好的解决办法和实现思路啊?小弟在此不胜感激。

目前需要做一个在线客服聊天系统(类似WebQQ),要求具备高并发性能和及时性,目前能想到的架构是用DWR反转推送、多台tomcat部署工程以及nginx做负载均衡。通过这段时间的技术研究发现,如果所有的聊天用户(例如:A和B两个)都在同一台tomcat下聊天能很好的实现预期效果。但如果均衡后A和B用户不在同一台服务器下,则不能进行相互的消息推送。其中推送这块我用的最新版DWR的如下方法:

Java代码  

  1. Browser.withPageFiltered(WebContextFactory.get().getScriptSession().getPage(), ScriptSessionFilter filter, Runnable task)  

究其原因是由于第一个参数只能在当前服务器工程的ScriptSession对象中获取目标页面,而且filter也只能从当前服务器工程的ScriptSession中过滤出推送目标,因此不能进行跨工程的推送。


缥缈止盈
浏览 98回答 2
2回答

蛊毒传说

可以试一下memcached 进行session复制

12345678_0001

既然scriptSession不能跨工程访问,那就把它推送到本工程,本工程收到消息后发送请求给所需要接收的工程
随时随地看视频慕课网APP
我要回答