`

JWChat源码研究心得

    博客分类:
  • AJAX
阅读更多
最近研究JWChat这个基于jabber协议的聊天工具,搞了几个星期了,有点了解的地方在这里记录一下,先要说一声感谢本网站的:mircle 一篇文章:<a href="http://www.iteye.com/topic/154697" target="_balnk">http://www.iteye.com/topic/154697</a>,写的非常详细.入门配置是没有什么问题了。下面是我最近看代码的一点平时记录:
JWChat的jabber连接是面向对象的继承操作,核心类全部在jsjac.js里面,后面我看了,这个是一个独立的基于javascript 连接jabber服务器的组件,JWChat只是应用了他。
jwchat.html的init()方法里面有二种连接方法,分别是:JSJaCHttpBindingConnection和JSJaCHttpPollingConnection,这二种都继承了JSJaCConnection,JSJaCConnection是和jabber服务器连接的类, JSJaCHttpBindingConnection中 connect 是JSJaCHBCConnect.  JSJaCCHBCConnect是把客户端的各种信息组合成jabber协议的xml请求文档,它的oCon就是 JSJaCConnection的实例, 


JSJaCConnection里面的 JSJaCHBCDisconnect

在jwchat项目中,chat.html是发送信息的页面,function submitClicked是发送按钮的事件,这里的aMessage是发送信息对象,其中jwcMain就是chat.html的上级页面:jwchat.html对象。
  var aMessage = new JSJaCMessage();
  aMessage.setType('chat');
  aMessage.setTo(user.jid);
  aMessage.setBody(body);
 
  jwcMain.con.send(aMessage);
 
jsjac.js里面, JSJaCConnection.prototype._sendRaw 发送信息的方法。


jsjac 里面的 JSJaCConnection.prototype._handleEven 是触发事件的方法。



shared.js 是JWChat项目中,js共用方法类,里面有许多共用的方法让其它function 调用 : for example:cutResource
roster.js 是针对聊天好友和信息的管理js 文件。
roster.js里面的 RosterOpenChat,是打开聊天窗口 chat.html页面,并且加载收到的信息

JWChat 信息发送过程研究总结:ClientA 发送信息给 ClientB,先发送给 JHBServlet,然后JHBservlet发送给 openfire jabber服务器,openfire jabber服务器分析接收信息,查找接收信息ClientB,通过ClientB和服务器建立的xml流直接把信息发送给ClientB.

JWChat 里面请求加为好友的代码:subscription.thml 15行:
function sendSub() {
  var aPresence = new JSJaCPresence();
  aPresence.setType('subscribe');
 
  if (!document.forms[0].to.value || document.forms[0].to.value == '') {
    alert("JID missing");
    document.forms[0].to.focus();
    return false;
  }

  var to = document.forms[0].to.value;
  if (to.indexOf('@') == -1)
    to += '@' + srcW.JABBERSERVER;

  aPresence.setTo(to);
  if (document.forms[0].msg.value && document.forms[0].msg.value != '')
    aPresence.setStatus(document.forms[0].msg.value);
alert(aPresence.getDoc().xml);
  srcW.con.send(aPresence);
   
  window.close();
}


JWchat里面的 function handlePresence 是接收和发送用户增加好友请求处理的函数

未完,待续
分享到:
评论
3 楼 zfms 2012-11-08  
handlePresence 请问这个方法您那边加好友的时候触发了吗?我这不管用呢
2 楼 lw150 2011-11-29  
jwchat性能有问题
1 楼 moistrot 2010-04-23  
你好,我想问你下 用jwchat和openfire做一个网络聊天室有困难吗?集成自己的系统用户进来。

我现在没有很好的思路。

有空可以发资料到我邮箱吗:  moistrot@gmail.com

相关推荐

    前端聊天 jwChat 源码

    **正文** 前端聊天工具jwChat的源码分析与学习 ...通过分析和研究jwChat的源码,开发者不仅可以提升前端技能,还能学习到如何设计和实现一个完整的实时通信应用,这对个人技能提升和职业发展都是非常有益的。

    jwchat源码

    JWChat源码 1、首先配置jwchat要具备的环境(我开发的环境) tomcat7.0 jdk1.7 openfire3.9.3 2.在网上查找下在jwchat.war文件,将其解压后放到tomcat目录下的webapps下 3.下载xalan的xalan.jar,serializer.jar, ...

    jwchat.rar

    《JWCHAT源码解析:构建基于JavaScript的Openfire Web聊天工具》 JWCHAT是一款基于JavaScript开发的开源Web聊天工具,它与Openfire服务器配合使用,为用户提供实时、交互式的在线聊天体验。通过深入理解JWCHAT的...

    【JwChat极简聊天框组件 v0.2.48】基于Vue和ElementUI极简的聊天框组件+表情包功能+可自动匹配微信表情

    JwChat极简聊天框组件是一款基于Vue和ElementUI极简的聊天框组件。 软件包含了表情包功能,可自动匹配微信表情。还包含了聊天窗口配置组件,可以自由配置顶部状态栏和右侧信息栏。 JwChat安装: 使用 npm 安装 npm ...

    jwchat 汉化源码基于openfire服务器端的

    jwchat汉化源码,基于openfire服务器端的,可以跑得通,直接将war格式文件导入到eclipse中即可。然后就可以应用了,注意jdk版本至少要1.5以上。

    利用jwchat搭建WebIM

    下载jwchat源码后,将其部署到Apache服务器的Web根目录下。 1. 解压缩jwchat文件,确保所有文件都在同一目录下。 2. 修改config.js配置文件,将服务器地址、端口、域名以及openfire的服务器地址和端口填入相应位置。...

    jwchat.war jwchat.war

    jwchat.war jwchat.war jwchat.war jwchat.war

    Jwchat+openfire部署

    - 获取Jwchat的源码或者预编译的包,确保与Openfire版本兼容。 - 修改Jwchat的配置文件,配置Openfire服务器地址、端口、服务器域名以及API密钥等信息。 - 如果需要,可以对Jwchat的主题、语言、权限等进行个性化...

    jwchat配置后的代码,经过测试可用

    3. **JWChat源码编译**: 获取JWChat的源代码后,使用标准的C/C++编译器进行编译。可能需要调整编译选项以适应你的环境,例如指定路径链接到XMPP服务器的库。 4. **配置文件修改**: JWChat的配置文件(通常是`config...

    JwChat极简聊天框组件 v1.1.1.zip

    源码源代码是开发人员进行二次开发的基础,JwChat的源代码提供了完全透明的实现细节,开发者可以根据需求对其进行定制和扩展。源代码的开放性使得用户能够深入理解其工作原理,解决在实际应用中遇到的问题,或者根据...

    jwchat-1.0beta3.zip

    3. **安全性**:作为开源软件,jwchat的代码公开透明,允许开发者对源码进行审查,确保了软件的安全性和隐私保护。此外,它可能还支持SSL加密,增强了数据传输的安全性。 4. **易用性**:jwchat的界面设计简洁直观...

    jwchat资料

    - **构建流程**:通过编译源码,将结果打包成WAR文件,其中包含了`WEB-INF`目录下的所有资源。 - **部署**:将WAR文件部署到支持Java Servlet容器(如Tomcat、Jetty等)上,容器会自动解析`WEB-INF/web.xml`并启动...

    jwchat修改过全部中文可以直接用

    标题"jwchat修改过全部中文可以直接用"表明这是一款名为jwchat的软件,经过了全面的汉化处理,用户下载后无需额外设置即可直接使用中文版。 描述中的"自己在下个openfire服务器,直接可以用"意味着jwchat可能与...

    JwChat极简聊天框组件 v1.1.0.zip

    JwChat极简聊天框组件 v1.1.0 是一款专为开发者设计的轻量级聊天界面解决方案,旨在提供快速集成、高度自定义以及流畅用户体验的聊天功能。这款组件适用于网页应用,可以帮助开发者轻松地在他们的项目中构建出美观且...

    jwchat-1.0.tar.gz

    《JWChat 1.0:打造实时通讯的Web客户端》 JWChat 1.0 是一个专为实现即时通讯功能而设计的Web客户端,它允许用户在浏览器上进行实时的消息交换,无需安装额外的桌面应用。这个开源项目不仅提高了沟通的便捷性,...

    openfire+jwchat

    "Openfire+jwchat"是一个基于Web的即时通讯(IM)解决方案,它结合了Openfire服务器和jwchat客户端来实现高效、安全的在线聊天功能。以下是对这个系统的详细解析: **Openfire**: Openfire是一款开源、基于XMPP...

    jwchat-1.0beta3.rar_ajax jabber_jwchat_jwchat-1.0_openfire

    **JWChat 1.0 Beta 3: Ajax Jabber 客户端与 Openfire 集成详解** JWChat 1.0 Beta 3 是一个基于Ajax技术实现的Jabber即时通讯客户端,它提供...同时,它也为学习和研究XMPP协议及Ajax应用开发提供了宝贵的学习材料。

    整理了可运行的jwchat程序包

    【标题】"可运行的jwchat程序包"是一个整合了多个组件的软件包,旨在提供一个便捷的方式来运行jwchat聊天应用。这个程序包包含了jwchat本身,以及两个重要的依赖库——xalan和JabberHTTPBind。xalan是Apache组织开发...

Global site tag (gtag.js) - Google Analytics