openfire系列----简单的js im聊天实现

来源:互联网 发布:java构造器写法 编辑:程序博客网 时间:2024/05/17 06:10

备注:实现这个功能折腾了一天,调出了一个简单的雏形,在这里总结下

这里我大概的讲下openfire相关的各个部分的功能,

一:openfire 简单来说,OpenFire是一个采用纯Java语言编写(核心架构使用Mina构建)的开源RTC(Real-Time Communications,实时协作)服务器。它采用XMPP协议进行分布式通信,该协议的前身其实就是基于Jabber协议,只不过XMPP对其进行了部分扩展。说到底XMPP协议无非就是一个基于TCP/IP协议的扩展协议,它采用XML的方式进行数据传输,以此满足体系结构的中立

二:Spark是利用Smack API进行与OpenFire服务器通信的客户端程序,而Smack就是提供给开发人员使用的基于XMPP协议的API。

具体介绍可以参考:http://gao-xianglong.iteye.com/blog/1944234 这篇文章

三:客户端程序 很多时候,我们往往需要开发自己的基于XMPP协议的客户端与OpenFire进行通信,这时候我们则不会再使用Spark了。客户端可以是桌面应用,也可以是移动应用,但无论是那种客户端,使用的协议都是基于XMPP的,所以充分利用Smack API完全开发出与OpenFire服务器通信的客户端程序。


这里我尝试着实现一个js客户端调用服务端的例子。

先说下我这里的环境:

windows环境+eclipse+tomcat6(客户端代码我部署在了这个上面 端口8080)+openfire服务器(这个我是通过源码启动的)

1:起初我采用的方案是:jsjac+jquery+JabberHTTPBind+Openfire

具体参考:http://www.blogjava.net/hoojo/archive/2012/08/13/385360.html

不过我的没能成功通信,由于时间问题没有具体去研究什么原因,我这里JabberHTTPBind直接把类复制了进去,没有打成jar包这样便于调试。后期我会抽时间看看这里没能成功通信的原因。

2:后来我采用的方案是:strophe+jquery+openfire+ngix

这个方案我调通了。这个地方可以参考官方下载下来包中的excample中的js和html文件,不过记得自己需要修改下js文件里面的

var BOSH_SERVICE = 'http://127.0.0.1/http-bind';

这个变量声明要写成自己的openfire服务器所在的域名(我这里的openfire是在eclipse里面通过源码启动的)

参考地址:

strophe官网:http://strophe.im/strophejs/

网友写的一篇相关文章:http://blog.csdn.net/xiao__gui/article/details/42642573

安装的步骤基本相差不多,我这里只提下几点注意事项,自己遇到的。

NOTE1:openfire服务器安装的时候,配置域名的地方尽量配置为自己的ip,这个后面客户端连接服务器的时候要用到。

NOTE2:strophe客户端代码编写完成后记得检查下是否修改了本地的BOSH服务器地址。(这里的代码我是简单修改了下官方example中的代码)

NOTE3:使用openfire的话记得把http绑定打开,还有就是让BOSH访问有效。

NOTE4:在输入用户名,密码访问openfire服务器的时候需要使用用户名@openfire域名(webspark_test01@zz-rdc-00545)的形式来访问才能被服务器识别。


起初的时候我没有用ngix,怎么访问都没法成功连接,js访问报一下错误

echobot.html:1 XMLHttpRequest cannot load http://127.0.0.1:7070/http-bind. Response for preflight is invalid (redirect)

这个时候看到了这么个文章:http://kazge.com/archives/951.html

我便尝试使用ngix,在ngix的配置目录下nginx-1.10.0\conf找到nginx.conf文件在server配置项下添加以下内容

  1. location / {  
  2.             proxy_pass http://127.0.0.1:8080/;  
  3.         }  
  4.   
  5.         location /http-bind {  
  6.    
  7.             proxy_pass http://127.0.0.1:7070/http-bind/;  
  8.    
  9.             proxy_buffering off;  
  10.    
  11.             proxy_redirect off;  
  12.    
  13.             proxy_read_timeout 120;  
  14.    
  15.             proxy_connect_timeout 120;  
  16.    
  17.        }  
第一个就不用说了吧,下面那个就是openfire的http绑定了,这个配置在后面的开发中会应用到,只要nginx和tomcat都启动了就可以用了。需要注意的是此后我们的服务器地址就变成了http://127.0.0.1/了此时就不用写8080了。下面看下上面的配置起到了什么作用。在windows中ngix的启动和退出也都比较简单,具体命令启动:命令窗口下运行nginx.exe即可;退出 nginx -s quit

ngix成功启动后可以在nginx-1.10.0\logs目录中查看进程pid和相关日志。


以上的配置都完成后,可以登录spark,然后js客户端联合测试下,我这边可以调通。



0 0
原创粉丝点击