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/

openfire安装配置完全教程相关推荐

  1. mysql数据库解压安装教程_MySQL数据库之windows 10下解压版MySql安装配置方法教程...

    本文主要向大家介绍了MySQL数据库之windows 10下解压版MySql安装配置方法教程 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. windows 10 下安装解压版的 ...

  2. php性能分析工具XHProf安装配置使用教程(linux精华版)

    XHProf是一个分层PHP性能分析工具.它报告函数级别的请求次数和各种指标,包括阻塞时间,CPU时间和内存使用情况.一个函数的开销,可细分成调用者和被调用者的开销,XHProf数据收集阶段,它记录调 ...

  3. iis7 php5 isapi配置,Windows7 IIS7下以FastCgi和ISAPI方法安装配置PHP5教程

    说到PHP环境配置与安装,通常以Apache搭载PHP配置为主,随着PHP版本不断更新,对Windows IIS平台的支持也越来越好,在Windows IIS平台上配置安装PHP环境也越来越方便. 在 ...

  4. 乌班图mysql8.0安装第一次手工启动_Ubuntu Server 16.04下mysql8.0安装配置图文教程

    Ubuntu Server 16.04下mysql8.0安装配置图文教程 1.从Mysql官网上下载安装文件.有两种方式可供选择: 使用APT安装方式安装 使用完整的安装包进行安装 sudo dpkg ...

  5. mysql zip win10安装_mysql 8.0.16 Win10 zip版本安装配置图文教程

    本文为大家分享了mysql 8.0.16  Win10 zip版本安装配置图文教程,供大家参考,具体内容如下 首先去mysql官网下载mysql最新版本 1.选择如图所示 community 2.点击 ...

  6. Emacs 安装配置使用教程

    Emacs 安装配置使用教程 来源 https://www.jianshu.com/u/a27b97f900f7 序|Preface 先来一篇有趣的简介:Emacs和Vim:神的编辑器和编辑器之神 - ...

  7. mysql5.7.17winx64安装_MYSQL数据库mysql 5.7.17 winx64安装配置图文教程

    <MysqL数据库MysqL 5.7.17 winx64安装配置图文教程>要点: 本文介绍了MysqL数据库MysqL 5.7.17 winx64安装配置图文教程,希望对您有用.如果有疑问 ...

  8. 从零开始——Emacs 安装配置使用教程 2015

    从零开始--Emacs 安装配置使用教程 2015 字数11995  阅读13410  评论12  喜欢41 教程存档Github 序|Preface 先来一篇有趣的简介:Emacs和Vim:神的编辑 ...

  9. win10+vs2019+FFTW64位安装配置保姆教程

    win10+vs2019+FFTW64位安装配置保姆教程 FFTW 是一个C语言的快速傅立叶变换库.(据说是世界上最快的FFT哦) vs2019下载与安装 参考链接:VS2019安装教程 FFTW下载 ...

最新文章

  1. jasp报错_jetty启动访问jsp页面报错
  2. 【PHPExcel】生成Excel2007文件并下载
  3. 机器学习-聚类之K均值(K-means)算法原理及实战
  4. 艰困之道中学到的经验教训
  5. Android: android 如何预置APK
  6. Spring4.0学习笔记(5) —— 管理bean的生命周期
  7. 关于c# 静态构造函数的说明
  8. linux源码中的核心数据结构
  9. 2008服务器系统来电自启,服务器2008自动重启
  10. [转载]Windows系统的错误报告保存在哪个文件夹里?
  11. [CTF]学习资源推荐
  12. html开发一个月多少钱,html5前端开发工资一般是多少
  13. php 替换表情符号,php怎么实现正则替换特殊符号
  14. [轉]ERP系统之比较——SAP、Oracle、BAAN、JDE、SSA
  15. references column 'xxx' which is not in SELECT list
  16. matlab在线_正版MATLAB向中国人民大学全校师生免费开放!
  17. 多光谱行人检测(一)Multispectral Pedestrian Detection:Benchmark Dataset and Baseline
  18. 关于“一个SAPer的网络日志”
  19. js设置cookie有效期,并获取存储的cookie值
  20. 如何在Windows 10桌面显示我的电脑和控制面板等系统图标

热门文章

  1. python类中成员的的调用
  2. Codeforces 706D Vasiliy's Multiset
  3. JavaScript中的工厂函数vs构造函数vs class
  4. 《MySQL DBA修炼之道》——2.3 其他MySQL分支的安装
  5. SliverLight注册字典转换器方法
  6. 《互联网思维》读后感与笔记
  7. OpenERP的优化---使用Nginx反向代理
  8. shelve 序列化模块——day18
  9. CTF的一道安卓逆向
  10. 2015年12月书单推荐