本文介绍基于java的即时通信解决方案openfire3.6.4+spark2.5.8的完整的安装说明,并介绍了使用smack的java类库如何与im用户交互的例子,这样使得业务系统的消息可以通过smack编程将消息发送给spark客户端。spark2.5.8除了聊天之外还支持多人视频,语音,文件传输,截图,观看远程桌面,msn互联互通等功能。因

本文图片太多,需要看图片的请下载资源或者访问http://code.google.com/p/openjweb/downloads/list,找到java_im开头的文件下载。

Openfire+Spark安装手册

王保政

QQ:29803446

Msn:baozhengw999@hotmail.com

关键字:快速开发平台 openjweb 增删改查 即时通信

2009-8-29

第一章Java领域的IM解决方案.... 2

第二章 安装openfire3.6.4. 3

2.1 配置机器的域名... 3

2.2 安装openfire. 3

2.2.1 安装... 3

2.2.2 运行数据库脚本... 4

2.2.3 数据库驱动jar... 6

2.2.4 openfire初始化配置... 6

2.3 设置用户... 12

第三章 安装spark客户端.... 13

第四章 配置msn网关.... 15

4.1 服务端配置msn网关... 15

第五章Red5视频配置.... 18

5.1 部署red5.war. 18

5.2 spark客户端配置视频插件... 19

第六章 使用smack开发即时通信功能.... 22

第一章 Java领域的IM解决方案

Java领域的即时通信的解决方案可以考虑openfire+spark+smack。当然也有其他的选择。

Openfire是基于Jabber协议(XMPP)实现的即时通信服务器端版本,目前建议使用3.6.4版本,这个版本是当前最新的版本,而且网上可以找到下载的源代码。

即时通信客户端可使用spark2.5.8,这个版本是目前最新的release版本,经过测试发现上一版本在视频支持,msn网关支持上可能有问题,所以选择openfire3.6.4+spark2.5.8是最合适的选择。

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

通过smackmsn用户和QQ用户,gtalk用户发送消息应该也可以实现,关于向gtalk用户发送消息的例子较多。这个留待以后研究。至少目前可以通过程序向spark发消息了。对于局域网内部应用足以解决系统与用户交互的问题,甚至可以做自动应答机器人。

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

第二章安装openfire3.6.4

2.1 配置机器的域名

使用openfire需要配置机器的域名。如果局域网内没有安装域服务器,则需要手工为机器配置域名,打开C:/WINDOWS/system32/drivers/etc/hosts文件,增加一新行:

127.0.0.1 bzwang.tzsoft.com (用户根据自己的需要可配置称别的名字,但最好符合带.的域名格式)

其他机器使用域名访问openfire,也需要在C:/WINDOWS/system32/drivers/etc/hosts中指定bzwang.tzsoft.com对应的ip地址,假设安装openfire的主机IP192.168.1.10,hosts文件中应增加一新行:

192.168.1.10 bzwang.tzsoft.com

通过这种方式指定主机域名,建议安装openfire的机器配置静态ip地址以免ip发生改变。

2.2 安装openfire

2.2.1安装

安装程序为openfire_3_6_4.exe,运行后,语言选择简体中文,见下图:

后续按照提示安装,最后出现下面的界面:

这时先不要运行openfire,所以不要勾选上面页面的复选框,然后点完成,如果勾选的话,在新出现的窗口中点“stop”停止openfire后续的运行,然会点”quit”退出,因为下面要配置openfire使用的数据库,需要手工将数据库驱动放到openfire的某个目录下,否则openfire不识别数据库驱动的包名。

2.2.2运行数据库脚本

数据库运行脚本在C:/Program Files/Openfire/resources/database目录下,如果用户安装选择的不是C:/Program Files目录,可以到安装openfire目录下找到database目录,打开此目录后可看到有多种版本的数据库脚本,假定我们现在要把openfire的数据库安装在sqlserver2005中,则使用openfire_sqlserver.sql脚本,假如已经装好了2005数据库,可在Management Studio中执行数据库脚本,见下图:

执行后,打开数据库,可看到下面创建的数据库表:

2.2.3数据库驱动jar

如果使用sqlserver2005,则将sqlserver2005驱动jarsqljdbc.jar复制到C:/Program Files/Openfire/lib下,使用openjweb快速开发平台的用户可直接从D:/project/apache-tomcat-5.5.27/common/lib找到此jar包复制过去,另外此目录还有mysqlmysql-connector-java-3.1.12-bin.jaroracleojdbc14.jar,如果用户不选择sqlserver则复制对应数据库的驱动jar包。

2.2.4 openfire初始化配置

从开始菜单中找到openfire并运行,下面是运行界面:

”Launch Admin”,出现下面的页面,页面连接为http://127.0.0.1:9090/setup/index.jsp

语种选择中文(简体),点”Continue”:(下面的页面如果出现英文,请刷新一下页面或者重新点Launch Admin

这个页面的Domain默认为机器名,请改为一开始设置的域名,例如bzwang.tzsoft.com,就是将图中的Domain中的文字换成bzwang.tzsoft.com后,点Continue(继续):

这个页面中第一个选项,即标准数据库连接,不要选择嵌入的数据库(Embedded Database,嵌入的数据库是hsqldb数据库,生产环境不要选择此选项),然后点继续”:

这个页面是配置是否使用LDAP,我们现在不配置LDAP,所以选择 Default默认即可,点继续:

上图是sqlserver2005的配置,jdbc驱动类为: com.microsoft.sqlserver.jdbc.SQLServerDriver

数据库URL为:

jdbc:sqlserver://192.168.1.222:2324;DatabaseName=dms

数据库名和用户名及口令请根据实际环境配置。

配置完成后,点继续”:

如果点继续出现错误提示页面,请检查

(1) 数据库表是否按前面的步骤已在数据库中创建

(2) 是否已将对应的数据库jar保复制到openfirelib目录

(3) 检查数据库连接参数,端口,数据库名等属性,可使用dos命令行检查数据库端口是否有效,例如telnet 192.168.1.222 2324

下面是配置LDAP的页面,选择初始设置”(默认选项)即可。

点“继续”:

下面是配置超级管理员的页面:

输入一个邮箱和口令,例如123456

设置好后点“继续”:

这个时候不要点“登录到管理控制台”,登录肯定失败,需要切换到这个页面:

”stop”,然后点“start,等重启动成功后点”Launch Admin”,进入登录页面:

使用admin 用户名和设置的口令123456登录,下面是登录成功的页面,恭喜!sqlserver2005上安装openfire成功!

我们打开ofUser数据库表可以看到admin用户信息:(下面的口令不是用md5加密的)

2.3 设置用户

在登录成功页面点“用户/组”标签维护用户信息,可在这里增加新的用户,也可以建组,下面是新建的几个组:

下面新建几个测试用户,分别是abao/abao,zhangyu/zhangyu,suqi/suqi,liu/liu

说明:当安装了spark客户端后,用户可直接在客户端注册帐号。

第三章 安装spark客户端

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

下面是登录界面:

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

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

第四章 配置msn网关

4.1 服务端配置msn网关

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

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视频配置

5.1 部署red5.war

red5.war复制到C:/Program Files/Openfire/plugins,如果openfire是在运行状态,一会会在这个目录下自动部署red5.war(在此目录下自动生成red5目录)。安装成功后,openfire的管理页面会多出一个red5标签,见下图:

服务端不需要做任何改动。

5.2 spark客户端配置视频插件

上一步骤部署了red5后,需要停止openfire并重新启动,启动完成后,访问http://bzwang.tzsoft.com:7070/red5,显示一个red5html首页,下拉到页面最下面,找到spark plugin,”here”,见下图:

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

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

其中View Destop ScreenPublish 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好友发送消息以及接收消息。

转载于:https://www.cnblogs.com/ajuanabc/archive/2009/08/29/2462708.html

java即时通信解决方案openfire+spark完整安装指南相关推荐

  1. 开源企业即时通信解决方案

    开源企业即时通信解决方案 (2007-04-25 15:33:37) 转载▼     本文使用 Openfire 来解决企业即时通信平台,服务端选用Linux操作系统.客户端为windows平台. 第 ...

  2. 【即时通信】openfire安装和配置讲解

    文章目录 概述 一.下载openfire,解压就可以openfire启动服务.这里我安装openfire在linux服务器上.服务器地址:10.119.9.149. 二.准备openfire所需的数据 ...

  3. 手淘千牛IM即时通信 - 星巴克消息开放实践

    对垂直业务领域进行了解,抽象成领域模型,沉淀出通用能力和标准化体系,为后续业务赋能. 这是笔者理解的技术驱动业务.生于业务,又高于业务 笔者很荣幸可以参与到淘宝小程序的开放体系中,消息能力的开放也是里 ...

  4. (转)基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案

    一.前言.提出问题 公司最近举行2011年度创新设计大赛,快年底了正打算写写2010年以来Android开发的心得与经验,正好同事出了个点子:假如A和B两个人分别在不同的地点,能不能实现这样的功能,让 ...

  5. 利用openfire和smark的即时通信

    利用openfire和smark的即时通信 2014-06-26 09:12 3240人阅读 评论(5) 收藏 举报  分类: Android(3)  版权声明:本文为博主原创文章,未经博主允许不得转 ...

  6. 即时消息服务器eChat 与 通信解决方案

    昨天写的博客设计方式.选择,今天为他补充一个用户评论的方式–即时消息 eChat是一个即时通信系统.基于SignalR,编程实现了一个B/S架构建立的网络聊天工具 即时通讯是互联网时代的产物,至于他的 ...

  7. 使用java网络编程模拟简单网络即时通信

    使用java网络编程模拟简单网络即时通信 通信流程图: 解析: 1.在上图中我们可以看出对于任何一个客户端,都由两部分构成,发送端和接收端(分别由两个线程来维系) 2.客户端在每一次请求链接时都会轮询 ...

  8. 环信即时通信jdk,java版本服务器端的集成

    最近用到了环信即时通信云服务,在服务器集成的时候遇到了一些麻烦在这里记录一下: 首先,通过查看环信的开发者文档,地址在这里:http://docs.easemob.com/doku.php?id=st ...

  9. java接入小米,小米粥 java实现WebSocket即时通信

    序:JSR 356:Java API for WebSocket是javaee7新推出来的一个新的特性,他相对于其它容器实现,优点是他是一个标准.容器的更新都会遵守这个标准.不需要更改代码.减少后期的 ...

最新文章

  1. 数字图像处理的Matlab实现(1)—绪论
  2. Spring Boot Profile使用详解及配置源码解析
  3. CTFshow 文件上传 web165
  4. 【AI不惑境】数据压榨有多狠,人工智能就有多成功
  5. 【LeetCode】414.第三大的数
  6. 自写图片遮罩层放大功能jquery插件源代码,photobox.js 1.0版,不兼容IE6
  7. c++显式加载dll并使用DLL的类
  8. 从Eclipse切换到IDEA后需要做的事情
  9. 机器学习中的相似性度量(转载)
  10. Spring定时任务高级使用篇
  11. 火车票线程同步(一)互斥体实现
  12. java default修饰符_Java学习笔记--- 变量类型,修饰符
  13. Android ADT 无法在线安装,离线下载ADT压缩包方法。SDK Manager无法更新
  14. fgo服务器中断020202,fgo2.6版本更新 8月18日更新维护内容一览
  15. java wps haspassword,#在WPS表格里面设置了密码怎么取消#excel解除密码保护
  16. EXCEL-批量下拉填充
  17. 10年老程序员:到底是学前端好还是后端好?
  18. numpy pandas matplotlib 学习笔记
  19. html手机网站打不开,手机网页打不开是什么原因?网络正常但打不开网页怎么回事...
  20. 三菱PLC第一篇:GXWORK3与三菱FX5UPLC同通过交换机连接

热门文章

  1. 计算机|网页设计 |鬼灭之刃动漫主题
  2. Java毕设项目疫情期间中小学生作业线上管理系统设计与实现(java+VUE+Mybatis+Maven+Mysql)
  3. 聊聊从iOS固件提取系统库符号
  4. 10元倍数的整钱换1元、2元、5元的零钱组合C语言
  5. python读取txt文件时,报错【utf-8 codec cant decode byte 0xcc】的解决办法
  6. linux rename代码解析,linux中的rename命令的详细解释
  7. 论文解读:Sadeepcry:使用自我注意和自动编码器网络的蛋白质结晶倾向预测的深度学习框架
  8. 常用的Shell命令合集
  9. 安卓使用juicessh教程
  10. 程序员职场-坚决不做青蛙