目前需要做一个在线客服聊天系统(类似WebQQ),要求具备高并发性能和及时性,目前能想到的架构是用DWR反转推送、多台tomcat部署工程以及nginx做负载均衡。通过这段时间的技术研究发现,如果所有的聊天用户(例如:A和B两个)都在同一台tomcat下聊天能很好的实现预期效果。但如果均衡后A和B用户不在同一台服务器下,则不能进行相互的消息推送。其中推送这块我用的最新版DWR的如下方法:
Browser.withPageFiltered(WebContextFactory.get().getScriptSession().getPage(), ScriptSessionFilter filter, Runnable task)
究其原因是由于第一个参数只能在当前服务器工程的ScriptSession对象中获取目标页面,而且filter也只能从当前服务器工程的ScriptSession中过滤出推送目标,因此不能进行跨工程的推送。
请问各位大神有没有好的解决办法和实现思路啊?小弟在此不胜感激。
相关推荐
DWR (Direct Web Remoting) 是一种开源的Java库,用于在Web应用...同时,随着WebSocket等技术的发展,DWR的服务器推送功能可能逐渐被取代,但在一些老项目或对兼容性有较高要求的场景下,DWR仍然是一种有效的解决方案。
但在DWR3的推送模式下,服务器保持连接开放,直到有新的数据要发送或者连接超时。当服务器有新消息时,会立即通过这个开放的连接推送给客户端,而无需客户端再次发起请求。 要实现DWR3的推送消息,首先需要在服务器...
本实例主要关注DWR的消息推送功能,这在创建实时更新的应用如聊天室、股票报价或在线游戏等场景中非常有用。 1. **DWR框架概述** DWR框架的核心是将Java对象暴露给JavaScript,使得前端可以像操作本地对象一样操作...
- 对于大量并发用户,可能需要使用负载均衡和集群技术,确保服务的稳定性和可扩展性。 6. **测试和调试**: - 使用DWR的内置调试工具,可以查看和跟踪AJAX请求,方便调试和优化代码。 通过以上步骤,我们可以...
7. **性能优化**:在处理大量并发连接和频繁的消息推送时,需要考虑服务器性能和负载均衡。DWR支持线程池配置,可以调整以适应不同的场景。 8. **示例代码**:在提供的“ichat”文件中,可能包含了使用DWR实现聊天...
这些问题可以通过负载均衡、故障转移、队列服务等技术来解决。 总结来说,DWR与Java结合的Web消息推送方案利用了Comet技术,提供了实时、双向的通信能力。通过在后端处理数据推送和前端与服务器的交互,可以构建出...
`TestPushlet`则是DWR中的一个推送服务示例,它是基于Pushlet框架的一个组件。Pushlet是一种轻量级的事件驱动模型,允许服务器将数据“推送”到客户端。在DWR中,Pushlet可以创建一个持久的HTTP连接,保持客户端和...
3. **消息推送与反推送**:消息推送通常指的是服务器将信息推送到客户端,而反推送则是客户端向服务器发送请求后,服务器在接收到请求后立即响应,而不是等待客户端下一次请求时再返回数据。在C#中,使用...
为了支持大量并发用户,可以考虑使用集群或负载均衡技术,确保服务的稳定性和高可用性。此外,考虑使用NoSQL数据库如MongoDB来存储聊天记录,以适应高并发读写需求。 8. **调试与测试**: 使用DWR的调试工具,如`...
同时,考虑负载均衡和服务器性能,可能需要使用到WebSocket等更现代的技术来替代DWR的Comet。 总结起来,Spring整合DWR Comet创建的多人聊天室是一个实时交互性强、用户体验良好的Web应用。通过DWR的Comet技术,...
需要注意的是,随着用户数量的增长,可能需要考虑负载均衡、消息队列和推送优化等高级话题,以保证系统的稳定性和性能。同时,为了提高用户体验,还应关注错误处理、安全性、跨域支持等方面的问题。
6. **DWR聊天架构设计**:Direct Web Remoting (DWR) 是一种允许JavaScript和Java之间进行安全、简单通信的技术,常用于实现实时Web应用,如聊天功能。DWR通过AJAX提供双向通信,使得前端能够直接调用后端的Java方法...