本来只是想了解下基于WEB即时通信如何实现的(如WebQQ),没想到水这么深,涉及到的东西很多,技术上也给了我启发,起初还真不知道有“服务器推技术”的存在。
到目前为止本人已经成功搭建了openfire+spark,能实现聊天。但这客户端是基于CS的,基于WEB网页形式的客户端有jwchat,貌似过于简单了点。再者就是sparkweb,这是基于FLASH的客户端。
还没找到符合自己要求的基于WEB的客户端,难道只能自己修改相应源码来开发了吗。研究。。。。继续研究
---------------------------------------------------------------
现在WebIM可谓非常流行,其中已实现WebIM的厂商包括大名鼎鼎的sohu,Tencent QQ,Microsoft MSN,Google Gtalk,新浪,alibaba的淘宝旺旺,很多很多,基于WebIM的聊天引擎设计思路无非以下几种:
1. Ajax无刷新交互,设计一种时间间隔定期获取数据(如先每5秒刷新一次,再‘按5,10,15,……刷新一次获取数据,目前利用这一思路实现聊天引擎的开源产品很多,大家可以自己到open-open网站查阅)
2. 基于Pushlet技术的聊天引擎的实现
3. 基于Comet技术的聊天引擎的实现
4. 基于Jetty服务器的Comet技术的聊天引擎的实现
5. 基于XMPP协议的聊天引擎的设计与实现(可以利用Flash或Ajax或Js与Jabber服务器交互)
目前利用的最多的是通过Flash的XmlSocket+JS与网页的聊天UI进行交互或直接利用Flash界面(可基于Flex的AIR或其他等),本文重点介绍第5种聊天引擎的设计与实现,这也是大名鼎鼎Google的Gtalk采用的协议,关于XMPP协议,大家可以查阅 http://www.xmpp.org官方网站,先想听听大家的意见,大家一般实现WebIM是怎么来设计与实现的呢?也是用开源的产品么?
---------------------------整理收集-----------------------------------------
您可能已经听说过 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
http://jackshow.net/blog/2010/01/01/1262350860000.html
----------------------------------------------------------------------------------------
开源的comet实现:pushlet,dwr 2.0的reverse ajax和dojo的io.bind(),
聊天的客户端和服务器端都有开源项目,我用过webchat,wildfire,等.推荐大家有需要的话可以去看看.
简单例子(reverse ajax):http://blog.sina.com.cn/s/blog_5bd96d520100gau4.html
~~openfire~~~~即时通讯IM开发~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
即时通讯介绍以及开发流程:
http://blog.csdn.net/windone0109/archive/2009/10/16/4675944.aspx
源码下载:http://www.igniterealtime.org/downloads/source.jsp
Openfire: IM服务器
Spark:
是一个开源,跨平台IM-XMPP协议客户端。它的特性支持集组聊天,
电话集成和强大安全性能。
http://uoik.cn/?uid-2-action-viewspace-itemid-433
SparkWeb: 基于WEB的FLASH客户端
JWCHAT: 基于WEB的客户端
Asterisk-IM: 貌似是打电话功能
Openfirek客户端列表:http://xmpp.org/software/clients.shtml
Openfire源码布署与打包:
http://lmain.blog.51cto.com/779468/157942/
http://zyjwy02.iteye.com/blog/318037
见解:
http://rhythm-zju.blog.163.com/blog/static/31004200801504318444/
openfire底层源码学习:
http://blog.sina.com.cn/s/blog_4002ed930100j0og.html
学习笔记:
http://roserouge.iteye.com/blog/244171
http://tw5566.iteye.com/blog/519442 --介绍SPARK源码布署(由于SVN上的源码有很多BUG,实在受不了,还是直接下载EXE的安装文件算了)
http://www.dnbcw.com/biancheng/java/hgkb106887.html --spark编译问题
打电话功能:http://blog.tech4k.com/?tag=openfire通讯,im,即时聊天,dwr服务器,openfire,spark
分享到:
相关推荐
在这个"使用dwr实现的网页即时聊天"项目中,我们将深入探讨如何利用DWR的服务器推技术来创建一个实时的群聊系统。 1. **DWR框架**: DWR简化了JavaScript与Java之间的通信,通过在浏览器端提供动态生成的JavaScript ...
**DWR(Direct Web Remoting)在线交流即时通讯系统** DWR(Direct Web Remoting)是一种Java技术,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行直接的远程调用,实现了类似桌面应用的实时交互体验...
即时通讯(Instant Messaging,IM)在互联网应用中占据着重要的地位,它允许用户实时地进行文字、语音甚至视频交流。DWR(Direct Web Remoting)是实现这种功能的一种技术,尤其以其独特的Reverse Ajax特性在服务器...
在DWR中实现类似WebQQ的即时聊天功能,主要涉及以下几个关键知识点: 1. **DWR配置**:首先,你需要在Web应用的`dwr.xml`配置文件中声明要暴露给JavaScript的Java类,如`ChatManager`。这通常包括设置类名、方法名...
DWR网页即时通讯,即采用ajax技术推送消息
在描述中提到的"DWR服务器推技术整合Struts2",意味着我们将DWR与流行的MVC框架Struts2相结合,以创建一个具有聊天功能的Web应用。Struts2提供了一个强大的架构来处理HTTP请求,并结合DWR,可以创建一个动态的、交互...
在这个在线即时聊天系统中,DWR被用来创建一个高效、用户友好的通信层,使得客户端(通常是浏览器中的JavaScript)能够直接调用服务器端的Java方法,就像它们是本地函数一样。这种技术极大地简化了AJAX...
DWR是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。
DWR (Direct Web Remoting) 是一种开源的Java库,用于在Web应用程序中实现JavaScript与服务器端Java对象的双向通信。DWR使得开发者能够在浏览器端直接调用服务器上的方法,从而实现实时的数据交换和更新,这对于构建...
DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,实现动态的Web应用。在这个"DWR3消息推送(聊天Demo)"项目中,开发者提供了一个使用DWR3实现的简单聊天...
在“DWR3实现服务器端向客户端精确推送消息”这一主题中,我们将深入探讨如何利用DWR3进行服务器到客户端的消息推送,以及这种技术的优势和应用。 首先,理解DWR3的工作原理是至关重要的。DWR3通过建立一个安全的...
DWR 在线即时聊天系统,实现了对指定用户发送消息,和即时显示功能.rarDWR 在线即时聊天系统,实现了对指定用户发送消息,和即时显示功能.rarDWR 在线即时聊天系统,实现了对指定用户发送消息,和即时显示功能.rarDWR 在线...
DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现实时通信,它允许JavaScript和服务器端Java代码之间进行直接交互。DWR的主要功能之一是推送技术,这使得服务器可以主动向客户端发送数据,而不仅仅...
Direct Web Remoting (DWR) 是一个开源的Java库,它允许JavaScript在浏览器端与Java在服务器端进行交互,从而实现动态的Web应用程序。在这个"**dwr实现的服务器推demo**"中,我们看到一个实例,展示了如何利用DWR的...
DWR (Direct Web Remoting) 是一种开源的Java库,它允许Web应用程序在客户端和服务器之间进行异步通信,从而实现动态、实时的交互。DWR的核心特性是它支持AJAX(Asynchronous JavaScript and XML)以及服务器推送...
在这个"dwrdemo"中,我们将深入探讨如何利用DWR的服务器端反推功能来构建一个点对点聊天应用。 一、DWR基本概念 DWR的核心特性是它能够使JavaScript代码像操作本地对象一样调用服务器上的Java方法。这种机制使得Web...
【描述】中的"web聊天程序"和"即时聊天"是指基于Web的即时通讯系统,这种系统允许用户通过网页进行实时的文本、音频或视频交流。在DWR的帮助下,开发者能够构建出这样的系统,用户无需安装额外软件,只需打开浏览器...
在实际应用中,使用DWR服务器推送的例子可能包括实时聊天系统、股票行情更新、在线游戏状态同步等。例如,你可以创建一个Java类,定义一个返回最新消息的方法,然后在dwr.xml中配置该类和方法,使其可以被JavaScript...
总结来说,DWR服务器推送技术为构建实时交互的Web应用提供了强大的工具,使得像WebQQ这样的聊天应用得以实现。通过理解其工作原理和实现步骤,开发者可以运用这项技术来提升Web应用的用户体验。在实际开发中,还需...
我不能把公司的代码贴出来,所以我自己写了一个DEMO,已经实现了对指定用户发送消息的功能,并且即时显示在指定的用户界面上面.当然你可以修改这些,让它弹出来显示,或者像QQ一样在你页面的某个角落让消息的图标闪动:)