zoukankan      html  css  js  c++  java
  • 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:XtomChatopenfireinopenfire.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 FilesOpenfireplugins,如果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,直接保存在Sparkplugins目录下,重新启动spark。

     

    red5.war复制到Openfireplugins,如果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 FilesSparkplugins目录下,重新启动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-INFlib目录,使用下面的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/

  • 相关阅读:
    调试ASP
    规范的又一个例子
    不同单位转换问题
    客户处出现一个错误
    SQL视图嵌套视图很容易出错
    安装包得到大进步
    两年前的产品现在长得不错
    不用报表的理由
    PowerPoint笔记(五)
    文本编辑器vi
  • 原文地址:https://www.cnblogs.com/hellowzd/p/4181293.html
Copyright © 2011-2022 走看看