openfire安装配置完全教程

Java领域的IM解决方案

Java领域的即时通信的解决方案可以考虑openfire+spark+smack。

 

Openfire是基于Jabber协议(XMPP)实现的即时通信服务器端,最新版本是3.8.1

可以到http://www.igniterealtime.org/downloads/index.jsp下载(分为windows和linux版本)

可以到http://www.igniterealtime.org/downloads/source.jsp下载源码,方便二次开发插件。

 

Spark是即时通信客户端。同样在上述地址下载,最新版本是2.6.3

Spark支持聊天,会议,文件收发,截屏,连接msn等功能。

 

如果是想支持 语音,视频,则必须

不能安装 Online版本,必须安装Spark完整版本。

下载Openfire3.6.4版本及red5插件

 

Smack是即时通信客户端编程库,目前我已测通jsp使用smack的API向openfire注册用户发送消息,并且可以通过监听器获得此用户的应答消息。

通过Smack向msn用户和QQ用户,gtalk用户发送消息应该也可以实现,关于向gtalk用户发送消息的例子较多。

 

第二章 安装openfire

此处以windows版本(ZIP)版本进行演示。

ZIP版本解压后,将”openfire”文件夹拷贝到“D:\xtomchat”目录。

然后打开“D:\XtomChat\openfire\bin\openfire.exe”,启动后,点击“langch admin”,根据提示进行安装。

 

安装前,首先在本地MYSQL中新建xtom_chat数据库(utf8编码)。

然后安装过程中手动选择MYSQL,数据库URL串填写:

jdbc:mysql://192.168.1.146:3306/xtom_chat?rewriteBatchedStatements=true

 

安装过程中域名默认为本地计算机名称,此值不好用,可更改为IP地址或真实公网域名。

如果无法登录管理后台:则在ofuser数据表中,更换encryptedPassword字段的值为“36361c6a3f353bf245021f896fb138fe02c0b7612e9fcd1f”,则

用户名为admin,密码为”123456”。

 

安装spark客户端

 

安装程序为spark_2_5_8.exe,安装过程全部默认即可。

下面是登录界面:

 

 

登录时可使用openfire中创建的帐号,也可以点(A)帐户注册新帐号,服务器需设置为openfire的域名地址即上面安装的192.168.1.116,下面是登录成功界面:

 

关于spark客户端的具体功能就不介绍了,下面介绍openfire配置msn网关及spark如何连接msn,以及red5视频的配置方式。

 

 

======================WHB以下章节尚未进行测试=======================

配置msn网关

4.1 服务端配置msn网关

 

gateway.jar插件包(可网上下载)复制到openfire的plugin目录下,如:

C:\Program Files\Openfire\plugins,如果openfire安装到别的目录请找到对应的目录,把gateway.jar复制过去。停止openfire,重新启动并登录后,见下面的页面,多出了一个gateways的标签页:

 

 

Gateways,找到MSN Messagers,勾选,然后点“选项”,见下图:

 

 

以上默认的配置不用修改,点“测试”,显示:

 

 

点“测试连接”,显示测试成功。(右侧将显示绿色背景的文字提示测试成功)

 

4.2 spark客户端设置msn帐号:

 

启动spark,登录后,spark窗口的右上多出一个灰色的蝴蝶,见下图:

 

 

点这个蝴蝶,然后选择“输入登入资讯”,显示下面的窗口:

 

 

在这里输入msn的用户和口令,然后保存,稍后片刻,spark将从msn上获取用户列表,最后显示下面的msn好友列表:

 

 

 

这时可以选择一个在线用户聊天了,spark还支持文件传输,截屏,语音,视频等。

 

Red5视频配置

 

redfire插件下载地址:

http://code.google.com/p/redfire/downloads/list

搜索框里输入red5,或者直接打开:

http://code.google.com/p/redfire/downloads/detail?name=red5.war&can=2&q=

   
 

解压后将red5.war放到openfire的plugins下; 重启openfire

通过访问:http://127.0.0.1:9090/red5

 

下载redfire的spark插件

   
   
   

 

”here”会下载red5-plugin.jar,直接保存在Spark\plugins目录下,重新启动spark。

 

red5.war复制到Openfire\plugins,如果openfire是在运行状态,一会会在这个目录下自动部署red5.war(在此目录下自动生成red5目录)。安装成功后,openfire的管理页面会多出一个red5标签,服务端不需要做任何改动。

  上一步骤部署了red5后,需要停止openfire并重新启动,启动完成后,访问http://127.0.0.1:7070/red5/ ,显示一个red5的html首页,下拉到页面最下面,找到spark plugin

”here”,会下载red5-plugin.jar,直接保存在C:\Program Files\Spark\plugins目录下,重新启动spark。

spark中右键点一个人,会出现几个菜单其中View Destop Screen和Publish Desktop Screen是相关联的,如果A用户用Publish Desktop Screen发布了自己的桌面,B用户选择A用户,右键选择上一个图中的View Desktop Screen,则B用户可看到A用户的计算机桌面。在http://wpy.com:7070/red5页面上有一个功能和这个类似,To publish是发布自己的桌面,To Viewer是别人观看自己发布的桌面,多人发布是什么效果没有具体测试。可以自己发布然后观看自己的桌面(效果有点像两个镜子对照,会出现层层窗口嵌套的现象),当选择一个人,右键选择Add/Remove Video Roster后,可进行 视频聊天,可以加多个人进行视频,每选择一个热人,然后点Add/Remove Video Roster,就可以将这个人加入到视频中或者从视频中移除,下面是视频页面(我没装摄像头),可以看出一个页面中可以显示多人视频,如果其他人也装了spark,估计也能看到多人视频的效果(猜测,没有测试),

搞了好几天才把这东西搞明白。今天终于搞定了。其中的关键就是SparkWeb依赖于Red5。但是在http://www.igniterealtime.org/downloads/index.jsp的下载页面又找不到Red5的下载。包括openfire的插件下载页面http://www.igniterealtime.org/projects/openfire/plugins.jsp上也找不到Red5的下载。估计需要到red5的官网上下载,但是我没有去下载。还是在igniterealtime的网站上找到了for openfire的red5插件。下载地址http://www.igniterealtime.org/projects/openfire/plugins-beta.jsp。下载那个red5.war。之后的事情就简单了。

    将red5.war放到openfire的plugins目录下,然后启动openfire,它会自动解压red5.war。解压完成后能看到red5/sparkweb目录,以及一些其他的目录。然后还需要配置才能使用。进入openfire的管理控制台,即启动openfire后点击Launch Admin打开页面,输入admin/admin进入。打开“服务器设置”——〉“HTTP绑定”,将两个选项分别启用及enabled。然后注意HTTP绑定的端口,默认是7070。保存设置后重起openfire就OK了。通过浏览器打开http://[openfire的IP]:7070/red5/sparkweb/就看到了登陆界面了。输入openfire的用户的用户名及密码就等到到openfire了。

    安装完red5插件后,openfire的管理控制台中会增加一个red5的配置页,保持默认,什么都不用改。

    另外,在red5/sparkweb下的文件,看起来非常熟悉,就是从igniterealtime网上下载的Sparkweb的结构。所以可以下载最新的Sparkweb替换。

 

 

 

 

5.2 spark客户端配置视频插件

 

spark中右键点一个人,会出现几个菜单:

 

 

 

其中View Destop Screen和Publish Desktop Screen是相关联的,见下图:

 

 

 

如果A用户用Publish Desktop Screen发布了自己的桌面,B用户选择A用户,右键选择上一个图中的View Desktop Screen,则B用户可看到A用户的计算机桌面。在http://bzwang.tzsoft.com:7070/red5页面上有一个功能和这个类似,见下图:

 

 

 

To publish是发布自己的桌面,To Viewer是别人观看自己发布的桌面,多人发布是什么效果没有具体测试。可以自己发布然后观看自己的桌面(效果有点像两个镜子对照,会出现层层窗口嵌套的现象),下面是自己发布自己的桌面并观看自己的桌面的效果:

 

 

 

当选择一个人,右键选择Add/Remove Video Roster后,可进行 视频聊天,可以加多个人进行视频,每选择一个热人,然后点Add/Remove Video Roster,就可以将这个人加入到视频中或者从视频中移除,下面是视频页面(我没装摄像头),可以看出一个页面中可以显示多人视频,如果其他人也装了spark,估计也能看到多人视频的效果(猜测,没有测试),见下图:

 

 

 

使用smack开发即时通信功能

 

可以使用smack开源产品开发与即时通信用户交互的功能,这样我们可以使用系统来模拟一个openfire的用户来向其他用户发送消息,因而可以使应用系统产生的业务消息实时传递给即时通信用户,例如系统向某用户发送“有新的请假单需要您审批”,如果用户开启了spark客户端,则spark客户端会实时接收此消息。

Smack可从网上下载,目前最新版本为smack_3_1_0.zip,将此文件里四个smack开头的jar包放到自己的WEB应用的WEB-INF\lib目录,使用下面的jsp文件进行测试:

下面是测试向spark用户suqi发送消息的页面代码:

 

<%@ page contentType="text/html;charset=UTF-8"%>

 

<%@ page import="org.jivesoftware.smack.*"%>

<%@ page import="org.jivesoftware.smack.packet.*"%>

 

<%

 

   //以下可以通过程序向spark帐号发信息,但没有测通想msn帐号发信息

   XMPPConnection connection = new XMPPConnection("bzwang.tzsoft.com"); //openfire服务器的主机域名

   // ConnectionConfiguration connectionConfig = new ConnectionConfiguration( "messenger.hotmail.com",1863,"messenger.hotmail.com");

   //  XMPPConnection connection = new XMPPConnection(connectionConfig);

   connection.connect();//先连接服务器

   try

   {

       connection.login("abao", "abao");//使用openfire的注册用户登录openfire服务器

          System.out.println("登录成功!");

          //createChat的第一个参数一定要带域名(suqi@bzwang.tzsoft.com),否则会话失败

          Chat chat = connection.getChatManager().createChat("suqi@bzwang.tzsoft.com", new MessageListener()

          //Chat chat = connection.getChatManager().createChat("baozhengw9999%hotmail.com@msn.bzwang.cmissoft.com", new MessageListener()

          {

              public void processMessage(Chat chat, Message message)

                 {

                     //如果不用connection.disconnect()断开连接,这里可以监听回复信息

                        System.out.println("Received message: " + message.getBody());

                  }

           }

              );

             

              System.out.println("发送消息....");

             

              chat.sendMessage("请问你收到我的消息了吗?");//

              /* Message message = new Message("baozhengw9999%hotmail.com@msn.bzwang.cmissoft.com");

                 message.setBody("你好!我是个聊天机器人!");

                 connection.sendPacket(message);

           */

           System.out.println("发送完毕...");

              connection.disconnect();

              } catch (Exception ex) {

                     System.out.println("login error");

              }

 

%>

 

 

发送成功后,如果suqi用户打开了spark,则spark会闪烁提示有新消息,打开spark,聊天窗口显示系统用abao用户发送的消息,见下图:

 

 

 

这样实现了业务系统和即时通信的无缝整合,以后应该还可以实现通过smack编程使内网的openfire注册用户向自己的msn好友或QQ好友发送消息以及接收消息。

 

 

SPARK二次开发:

1.准备工作:

到官网上下载Openfire 3.6.4,并通过svn下载openfire、Spark和SparkWeb的源代码

官网地址如下:

http://www.igniterealtime.org/downloads/index.jsp

注意官网上最新的Spark版本是2.5.8,其jdk环境最好使用1.6的版本。

2.环境搭建——spark源码安装配置

 双击openfire_3_6_4.exe进行openfire的安装,安装过程很简单,不介绍了。

本例的开发环境是基于Eclipse的。

1)选择File——New——Project——Java Project。

     输入项目工程名spark

     Contents中选择 "Create project from existiing source",然后把spark文件所在的文件夹加进去.

 

 

 点击Finish。

 2)生成Spark:

      点击Window::Show View::Ant
      右击Ant面板,选择Add Buildfiles
      展开spark::build文件夹,选择build.xml,点击"OK"
      在Ant面板,展开Spark,双击"release",等一段时间,会提示"Build Successful"。

 3)运行Spark:

      点击Run::Open Debug Dialog...,出现"Run"窗口
      选择"Java Application",右键点击"New"按钮.
      在"Main"标签页,将New_configuration换成Spark.
      点击Project::Browse按钮,选择Spark,再点OK.
      点击Main class::Search按钮,选择main所在的类org.jivesoftware.launcher.Startup再点击OK
      建议勾选Stop in main.
      点击Classpath标签页,选择User Entries ,使得Advanced..按钮变的可用.点击Advanced按钮.在弹出来的Advanced Options窗口,选择Add Folders,再点OK,在Folder Selection窗口选择spark::src::resources 文件夹,点击OK
      选择Common标签页,勾选Debug,Run前面的框
      点击Apply,再点击Close

4)在run下选择spark,运行成功!

 

 

 参考文档:http://www.igniterealtime.org/community/docs/DOC-1040

 

http://wanghaibin0921.blog.163.com/blog/static/36068840201351785643146/

posted @ 2014-12-23 21:41  fleam  阅读(6730)  评论(0编辑  收藏  举报