JWChat源码分析

工作需要仔细看了一下JWChar的源码
我对JavaScript并不熟悉,有分析和理解错误的地方,请朋友指教

首先是关于JWChat,一个用AJAX和html来实现的jabber客户端(我用jabber服务器实现是openfire),作为采用web形式开发的客户端,摒弃了C/S结构客户端的繁琐和使用上的不便。
JavaScript是客户端的核心技术。

慢慢逐一的介绍框架中js文件中每个方法的作用

  • config.js配置文件(TODO)
  • jsjac.js核心文件(是不是可以理解为J ava S cript Ja bber C ore)
  • 但不管怎么理解,它是客户端中最重要的部分。它的作用包括了处理和拼接xml信息
    1. 定义并初始化一些变量(配置)
    (todo)
  • Shared.js 可以共享的一些工具类,代码不多
    function getArgs()获取url中的参数
    function cutResource(aJID)从一个已给的jid中去掉resource部分
    function makeWindowName(wName)替换一些特殊符号成英文单词
    function htmlEnc(str)过滤html代码中的特殊符号有"&<>\"四个
    function msgFormat(msg)信息格式化,替换信息中的表情和urls
    function isValidJID(jid)验证jid的节点名是否包含如下非法的字符'"',' ','&','\'','/',':','<','>','@'
    function jab2date(ts)转换jabber返回来的时间戳成js日期对象
    function hrTime(ts)转换2004-08-13T12:07:04±02:00返回来的时间格式到一个人类可以阅读理解的格式
    function jabberDate(date)将js对象类型的时间转换为jabber的时间格式
  • browsercheck.js浏览器检查
    function BrowserCheck()只有一个方法用来检查浏览器生产商和特定版本,在方法外自动生成了一个名为is的BrowserCheck对象。
  • emoticons.js写明了表情的特殊符号与图片的对应关系,作用就是在做message内容过滤的时候将代表表情信息的特殊符号,转换为相应图片名称。
  • jabber_x_data.js只有两个方法
    function genJabberXDataReply(form)
    function genJabberXDataTable(x)根据传过来的对象x进行一些html代码的生成
  • pngfix.js
    从命名规则可以看得出,是为了有关png图片方面缺陷上的处理
    function correctPNG()正确的处理PNG图片在IE5.5或者更高版本中的透明度问题
    当中有οnlοad=correctPNG(),也就是说在加载的时候就会自动执行
    其中有段代码的大小写大概是对进行一个替换,比如将onclick替换成onClick
  • roster.js从名字上看大概就是名单和组群方面功能的实现
    代码相对上面几个较多,(todo),todo了
  • sounds.js或许和声音有关吧(todo)
  • statusLed.js状态(todo)
  • switchStyle.js(转换类型,是转换在线状态吗?)
  • version.js版本,偷偷看了一下,内容很简单,就一句
    var VERSION="1.0beta3";

大概也就这些js文件。真要是从头看到尾,头还真疼。

第一步,我只是想它是怎么和jabber服务器(openfire)交互的,并且很好奇与服务器交互的核心代码在哪个js文件里)。在我看来,理解了这些,你又知道了在jsjac.js做了一些message发布和接受的处理(也就是对xml拼合和解析的过程),只要知道了如何和服务器交互,我想自己也可以实现一个简单的IM软件。因为openfire底层应用的是XMPP协议嘛,信息格式正确,问题就不大。

(todo)(这里忽略了一个问题,jwchat是一个web应用,它有它自己的web.xml配置,当中应用了servlet来接受请求再转发给jabber。

N分钟后

发现一个问题。在1.0版本的源码中包含api文档。似乎开发包有些不规范,为什么1.0b3版本里没有。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JWChat源码 1、首先配置jwchat要具备的环境(我开发的环境) tomcat7.0 jdk1.7 openfire3.9.3 2.在网上查找下在jwchat.war文件,将其解压后放到tomcat目录下的webapps下 3.下载xalan的xalan.jar,serializer.jar, xercesImpl.jar, xml-apis.jar放到webapps\jwchat\WEB-INF\lib目录下即可。 4.修改配置文件 config.js 复制代码 1 var SITENAME = "127.0.0.1";//127.0.0.1是你openfire服务器的名称 2 var BACKENDS = 3 [ 4 { 5 name:"Open Relay", 6 description:"HTTP Binding backend that allows connecting to any jabber server", 7 httpbase:"/jwchat/JHB/", 8 type:"binding", 9 default_server: SITENAME 10 } 11 ]; 复制代码 jsjac.js 在302行if(this.has_sasl)前加this.has_sasl=false; web.xml 1 <servlet-mapping> 2 <servlet-name>Jabber HTTP Binding Servlet</servlet-name> 3 <url-pattern>/JHB/</url-pattern> <!--这里的修改主页是对应上面的config.js,如果config.js的httpbase配置是/jwchat/,那这里的就不用修改了 --> 4 </servlet-mapping> (黄色表示要修改的部分) 5.启动tomcat ,访问http://l127.0.0.1:8080/jwchat/ (切记如果你的openfire服务器名称为127.0.0.1,访问jwchat浏览器输入127.0.0.1,如果输入localhost则会报Authorization failed),我就是因为这个问题烦恼了很长一段时间。 <报错修改> 1.如果报Service unavailable A.可能是openfire没有启动 B.config.js中的var SITENAME = "127.0.0.1";没有与openfire服务器名称相同   2修改openfire服务器名称 A.点击服务器,服务器管理器,编辑属性 修改服务器名称,修改完的服务器名称前有感叹号 B.出现叹号,我们要删除安全证书,点击服务器,服务器设置,服务器证书删掉这里的证书。 C.删除后,在当前页面会出现提示,然后按照提示点击相应的链接,重启服务器,然后登陆,再生成证书 D.然后生成完成后,手动重启openfire服务器,再次登陆发现警告没有了。 3. 在服务器端增加配置 xmpp.httpbind.client.requests.polling = 0 xmpp.httpbind.client.requests.wait = 10
一、apache服务器配置。 我们下载安装的是httpd-2.2.17-win32-x86-no_ssl.msi,安装完成后,我们需要配置一下,由于jwchat是用javacript去和openfire进行通讯的,所以他们之间的通讯是基于http的,但是由于浏览器为了安全性是不允许javascript跨域访问的。我们必须通过别的技术来绕过这限制,所以我们采取apache服务器的重定向功能去突破这个限制。 安装完成后进入到apache的安装目找到conf文件夹下的httpd.conf文件,用记事本打开,把下列几个配置项放开(默认被注释掉了) 1、LoadModule rewrite_module modules/mod_rewrite.so 2、LoadModule proxy_module modules/mod_proxy.so 3、LoadModule proxy_http_module modules/mod_proxy_http.so 然后再在本配置文件的末尾加入如下几行配置 ServerName blzc.com <Directory /var/jwchat> Options +Indexes +MultiViews </Directory> AddDefaultCharset UTF-8 RewriteEngine on ProxyPass /jwchat/http-bind/ http://blzc.com:7070/http-bind/ 在此有必要对proxyPass的参数做些说明 “/jwchat/http-bind/”:jwchat就通过访问http://域名/jwchat/http-bind/地址去和openfire通讯,apache接到请求后就会重新定向到http://blzc.com:7070/http-bind/ “http://blzc.com:7070/http-bind/”:被重新定向的地址,也就是我们的openfire的http访问地址。7070端口是openfire的默认访问端口,当然我们也可以进入openfire进行配置。 二、openfire的配置 安装好openfire后进入web式的管理界面,选择服务器-》服务器管理器-》系统属性 在里边添加两个属性 xmpp.httpbind.client.requests.polling = 0 xmpp.httpbind.client.requests.wait = 10 三、部署jwchat jwchat解压后的文件内容放到apache访问目录/jwchat文件夹下, 然后打开config.js文件,把相应的内容修改为如下的形式 var SITENAME = "blzc.com";//你要访问openfir的域名 name:"Native Binding", description:"Ejabberd's native HTTP Binding backend", httpbase:"/jwchat/http-bind/",//访问openfire的地址 type:"binding", servers_allowed:[SITENAME] 最后再把jwchat文件夹考到apache的htdocs文件夹下,重新启动服务,然后访问http://localhost/jwchat即可。 若出现“authorization failed”,则可能是SSL不支持的原因,需要修改jsjac.js,在if(this.has_sasl) 前面加上this.has_sasl=false;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值