`

利用dwr的反推技术comet实现在线聊天

阅读更多
   您可能已经听说过 Comet,因为它最近受到了一定的关注。Comet有时也称反向 Ajax或服务器端推技术(server-side push)。其思想很简单:将数据直接从服务器推到浏览器,而不必等到浏览器请求数据。听起来简单,但是如果熟悉Web应用程序,尤其是HTTP协议,那么您就会知道,这绝不简单。实现Comet风格的Web应用程序,同时保证在浏览器和服务器上的可伸缩性,这只是在最近几年才成为可能。目前一些主流网站都有类似的原理,例如:webQQ、开心网、白社会等等,它们中消息动态都是采用类似的技术,也许具体实现方式不一样;


    作为一个技术人员,当你开始了解comet,都会或多或少有些兴奋,内心也会有蠢蠢欲试的冲动,再加上现在webQQ,baidu hi等网页聊天忽如一夜春风来,开得满网络都是,成了IT老大们下一个争夺的阵地。最近我和我的一个朋友也牛刀小试,用dwr的comet技术实现了简单在线聊天,当然我们不是为了争什么,只是为了满足作为技术人员的最原始的追求而已。不过其实它也简单,无非就是获取访问网站的用户列表,然后实现在线聊天就可以了。


    先说说获取在线用户列表,当用户访问某页面时,onload事件,调用dwr反推到后台,后台先,新建一个用户信息,然后装进用户在线列表数组里(onlineUsers)。然后把onlineUsers当参数,反推到各个页面,让界面执行js,重新根据onlineUsers数组,生成在线列表;当用户关闭时,调用dwr反推,让它反推到各个在线用户页面后,执行删除该用户在信息。

    然后说一下在线聊天,选中在线列表的人员,点击发起对话,调用dwr反推,去寻找与该用户信息匹配的会话,然后通过服务器反推执行代码到该用户页面,让页面执行对话信息的生成。当第一次连接建立后,dwr会记下双方的的信息(相当于一个访问地址),确立双方的关系后就能继续通话了,另外一个人也是这样处理。

    效果,大家可以访问DEMO,如果线上没有用户,你可以同时打开两个IE自个玩,或者把链接发给朋友,跟他们聊聊;如果线上已有用户,那你就可以直接跟她聊了,呵呵!

    这个DEMO,得感谢我们团队的小冯,正是在他的努力下,这个DEMO才得以顺利完成,他的QQ是: 158948314,如果需要交流,大家可以直接加他,验证信息:javaeye


   
11
2
分享到:
评论
5 楼 sinianxue 2011-07-13  
下载不了demo  点击进去是一个地图啊 可以发我一份吗 QQ751808566
4 楼 coolzhi 2010-04-18  
Collection<ScriptSession> sessions = WebContextFactory.get().getScriptSessionsByPage("页面路径");
for (ScriptSession session : sessions) {
ScriptBuffer script = new ScriptBuffer();
if(session.getId().equals(WebContextFactory.get().getScriptSession().getId())){
script.appendScript("方法名(").appendData(参数).appendScript(")");   //发现匹配,就执行对方页面的方法,显示自己的消息
}
}
3 楼 woainiwain 2010-04-17  
我是想私聊时。
比如:A,B,C三人聊天。
A和B私聊的话。在C的屏幕也会看到A和B的聊天信息。
因为Util.setValue(id,connection<>);是点到面的反推。
我想实现点到点。
后来通过
WebContext ctx = WebContextFactory.get();
HttpServletRequest request = ctx.getHttpServletRequest();
HttpSession session = request.getSession();
得到不同用户的session
但是反推时怎么过滤呢?
请指教。谢谢!
2 楼 coolzhi 2010-04-17  
woainiwain 写道
然后通过服务器反推执行代码到该用户页面


怎么可以得到是该用户呢?


凡时访问了服务器页面,后台的jsSession都保存了这个人信息的呀,所以很容易获取到其他用户
1 楼 woainiwain 2010-04-14  
然后通过服务器反推执行代码到该用户页面


怎么可以得到是该用户呢?

相关推荐

    spring整合dwr反推技术

    6. **反推技术**:为了实现实时的聊天功能,我们可以利用DWR的反推特性。在服务器端接收到新的聊天消息时,通过DWR主动将消息推送到相关的客户端,而无需客户端不断地轮询服务器。 7. **安全与优化**:确保DWR的...

    dwr反推demo

    DWR反推技术常用于实时性要求较高的应用场景,如聊天室、股票交易、在线协作工具等。这些场景中,用户需要实时获取服务器端的更新,而DWR反推提供了有效且便捷的解决方案。 总结,DWR2.x的反推技术是提升Web应用...

    dwr 反推技术

    在"通过dwr反推技术实现web聊天无刷新跟新技术"这个主题中,我们将深入探讨DWR如何用于构建实时聊天应用,并结合Comet技术来优化用户体验。 首先,DWR的工作原理基于Ajax(Asynchronous JavaScript and XML),但...

    dwr反推简单例子

    这种实时通信能力对于构建实时更新的应用,如聊天室、股票报价或在线协作工具等,非常有用。 需要注意的是,DWR虽然强大,但在现代Web开发中已经被其他技术,如WebSocket,所取代,因为WebSocket提供了更稳定、更...

    用DWR的comet推,实现多人聊天室

    【描述】: 本文主要探讨如何通过Spring与Direct Web Remoting (DWR)框架的整合,利用Comet技术来构建一个无需刷新页面的多人在线聊天室。Comet是一种实现服务器到客户端实时通信的技术,它解决了传统的Ajax轮询带来...

    dwr_comet_im.rar_DEMO_comet.tld_java comet

    在这个"**dwr_comet_im.rar_DEMO_comet.tld_java comet**"的压缩包中,包含了一个关于DWR实现Comet技术的DEMO,以及一个名为"DWR的comet技术实现及时通讯原理.docx"的文档,这将帮助我们理解如何利用DWR和Comet实现...

    用DWR comet+Spring实现服务器推送的例子--网页聊天室

    标题中的“用DWR comet+Spring实现服务器推送的例子--网页聊天室”涉及到的是Web开发中的实时通信技术。DWR(Direct Web Remoting)是一个开源Java库,它允许JavaScript在浏览器和服务器之间进行直接的、安全的远程...

    dwr comet的MyEclipse工程,可直接运行

    标题 "dwr comet的MyEclipse工程,可直接运行" 提供了我们今天要讨论的核心内容,即一个基于DWR(Direct Web Remoting)技术的Comet应用,它已经被集成到MyEclipse环境中,并且是可立即运行的状态。首先,我们需要...

    Spring整合DWR comet 实现无刷新 多人聊天室代码整理

    Spring整合DWR(Direct Web Remoting)和Comet技术,是一种高效的实现Web应用程序实时通信的解决方案,特别适用于创建如多人聊天室这样的实时交互应用。在这个项目中,Spring作为后端框架,负责业务逻辑处理和控制...

    Spring整合DWR comet 实现无刷新 多人聊天室

    Spring整合DWR(Direct Web Remoting)以实现Comet技术,是构建实时、无刷新的多人聊天室的一种高效方法。这种技术允许服务器向客户端推送数据,而无需客户端频繁发起请求,从而大大提升了用户体验。下面我们将深入...

    DWR_comet_0100.zip_ChatService.js_DWR_comet_0100_comet_dwr SPRIN

    总的来说,这个项目展示了如何结合DWR的Comet技术与Spring框架,实现一个实时的网页聊天应用。通过DWR,客户端能够及时接收到服务器的新消息,提升了用户体验。同时,Spring框架使得后端服务的开发和管理更加简洁...

    服务器反推技术实现即时聊天系统

    通过以上步骤,我们可以构建一个基于DWR的即时聊天系统,利用服务器反推技术实现高效、实时的消息传递。需要注意的是,随着用户数量的增长,可能需要考虑负载均衡、消息队列和推送优化等高级话题,以保证系统的稳定...

    DWR comet 长连接实现在线对话-简易版

    NULL 博文链接:https://happysoul.iteye.com/blog/1313069

    DWR推送技术大全 dwr推送聊天实例

    总的来说,DWR推送技术通过Comet实现了高效的服务器到客户端的数据推送,简化了实时Web应用的开发。结合提供的源码示例"j-jetty-dwr-comet-src",开发者可以深入理解DWR的工作原理,并学习如何在实际项目中应用这项...

    jsp DWR框架推模式实现的聊天室

    在本项目"jsp DWR框架推模式实现的聊天室"中,我们将探讨如何利用DWR的推送(Push)模式来构建一个实时的在线聊天应用。** 首先,我们需要了解DWR的基本工作原理。DWR通过在浏览器和服务器之间建立一个持久连接,...

    DWR comet的完整实现.pdf

    本文将通过具体案例来深入探讨如何利用DWR实现Comet功能。 #### 二、案例背景 在本案例中,我们需要设计两个页面: 1. **comet.jsp**:负责接收服务器端推送的数据并展示。 2. **action.jsp**:触发服务器端执行...

    DWR+JAVA进行web消息推送dwr-comet.zip

    总结来说,DWR与Java结合的Web消息推送方案利用了Comet技术,提供了实时、双向的通信能力。通过在后端处理数据推送和前端与服务器的交互,可以构建出高性能、低延迟的实时Web应用。开发者在实际应用中,需根据项目...

    dwr服务器端反推demo

    在这个"dwrdemo"中,我们将深入探讨如何利用DWR的服务器端反推功能来构建一个点对点聊天应用。 一、DWR基本概念 DWR的核心特性是它能够使JavaScript代码像操作本地对象一样调用服务器上的Java方法。这种机制使得Web...

    使用dwr推技术实现站内聊天室,可对所有人和指定人发送消息

    在本示例中,我们将深入探讨如何利用DWR推技术来构建一个站内聊天室,允许用户向所有人或特定个体发送消息。 1. **DWR推技术**: DWR推技术(Push technology)是DWR的一个重要特性,它允许服务器主动向客户端推送...

    dwr推技术实现服务器推送数据

    Java推技术不仅限于DWR,还有其他框架如Comet、Atmosphere等也提供了类似的功能。但DWR因其易用性和丰富的特性,成为许多开发者的首选。在实际应用中,需要注意处理好并发问题,优化推送效率,以及考虑浏览器兼容性...

Global site tag (gtag.js) - Google Analytics