openfire接口说明
openfire详细安装配置步骤

openfire详细安装配置步骤说明:红⾊字体可任意改动(但⼀旦改动,后⾯与此对应的名称也要⼀起改动),该⽂档下的步骤是在win7(32位,64位皆可)Eclipse环境下实现的,openfire⽤的是openfire_src_3_8_2版本;第⼀步:在D盘⾥新建⼀⽂件夹openfire_src,把openfire_src_3_8_2/openfire下的所有⽂件夹copy到openfire_src⾥;第⼆步:因为openfire源码中没有包含coherence.jar、coherence-work和tangosol.jar包,所以把这三个包copy到D://openfire_src/build/lib⾥;第三步:启动Eclipse,新建⼯程File-->New-->javaproject,填⼊项⽬名openfire,选中Createprojectfromexistingsource,然后单击Browse...选出在D盘⾥新建的Openfire_src;单击Finish。
第四步:双击openfire,会看到3处错误,第⼀处错误,是由于hazelcast下⾯包⾥的java代码与clustering下⾯包⾥的java代码重复引起的,直接对⽐包名跟java⽂件名即可,然后在clustering源码中删除与hazelcast想同的java代码;完成后hazelcast将没有错误;第五步:plugins中的错误的修正,直接打开plugins中的最后⼀个包,双击SipCommRouter.java找出出错的地⽅,把光标停留在出错部分,系统会⾃动提⽰错误原因,并提供解决⽅案,单击第⼀个⽅案(Addunimplementedmethods),再点击保存(或按Ctrl+S),SipCommRouter.java的错误会消失;SipManager.java的错误也是这样改的(注意它⾥⾯有2处错误),改正后保存,错误会全部消失(包裹src的错误);第六步:删除clustering插件的plug.xml⽂件,双击src--->双击plugins---->双击clustering----->删除plug.xml;然后再右键点击openfire⼯程--->buildpath---->configurationbuildpath会出现界⾯:单击AddFolder...然后把src/i18n和src/resources/jar勾上,单击OK,第七步:使⽤ant编译,单击window->showview->ant,会出现如下图右侧的界⾯,在空⽩区域右击,选择AddBuildfiles...(或者直接单击蜘蛛快捷图标)出现如下窗⼝项⽬名->buil->build.xml,双击build.xml再次右击右侧空⽩区域,选择RefreshBuildfiles进⾏刷新,最后,单击ant窗⼝⾥⾯的run(也就是绿圆⾥有⼀个⽩⾊三⾓形的图标);等Console窗⼝⾥不再弹出编译信息时,再次单击ant窗⼝⾥⾯的run,Console窗⼝最后倒数第⼆⾏会出现BUILDSUCCESSFUL的提⽰;如下图:第⼋步:右击项⽬名openfire,选择Refresh进⾏刷新,会发现多出了两个⽂件夹target和work。
openfire接口说明

1.1.1.查看好友资料:1)可以查看好友的详细资料。
2)通过openfire向v5查询接口参数:好友名返回参数:好友对象接口说明:openfire向v5提供的接口中传入好友名,返回好友对象;1.1.2.发送好友邀请:1)可以向好友发送邀请,添加对方为好友,等待对方验证。
2)和openfire交互3)openfire和v5交互v5接口接口参数:好友名返回参数:两个标示(是拒绝)接口说明:openfire将被邀请的用户用户名提供给v5,返回标示并推给被邀请用户;1.1.3.接受好友邀请:1)当收到对方发送来的好友邀请时,可以接受对方的邀请,或者拒绝。
2)openfire交互3)openfire和v5交互v5接口接口参数:邀请标示(是或拒绝)返回参数:是否添加接口说明:openfire将被邀请用户选择的标示提供给v5;v5通过标示判断是否添加,返回是否添加,openfire接受到返回信息后将备注信息推给被邀请用户1.1.4.删除好友:1)将某个好友删除后,该好友不出现在联系人名单中。
2)openfire交互3)openfire和v5交互v5接口接口参数:好友名返回参数:是否删除成功1.1.5.读取好友分组:1)从平台读取好友分组,并显示分组。
接口参数:当前用户名返回参数:好友集合1.1.6.显示头像:1)显示好友头像2)openfire代理v5交互接口1.1.7.显示名称:4)显示好友名称和签名。
5)openfire代理v5交互1.1.8.读取并显示团队信息:6)从平台读取团队设置信息并显示。
7)openfire代理v5交互,v5的团队信息接口8)openfire的聊天室信息+接口参数:团队的唯一标示返回参数:团队对象1.1.9.显示团队图标:9)显示图标10)openfire代理v5交互1.1.10.读取组织机构信息:11)从平台读取组织机构信息(具有层级关系)并显示。
12)openfire代理v5交互1.1.11.显示图标:13)显示图标14)openfire代理v5交互1.1.12.显示图标:15)显示图标1.1.13.读取最近联系人:17)从平台读取最近联系人列表并显示。
openfire简介

– 高度定制化线程模型(单线程/线程池)。 – 超载保护和传输流量控制
3、Openfire通信
——MINA流程
4、Openfire内部处理
• 自定义IQ处理器:处理自定义IQ包 • 自定义组件:自定义一个组件,名为 broadcast ,那么发送给子域 的消息,全部会路由 到该组件。 • 拦截器,全局拦截所有流经Openfire的 Packet包。用户拦截器拦截所有和该用户有 关的Packet包。 是Openfire扩展的主要三种方式
自定义组件 由路由表 查询得到
4、Openfire内部处理 ——Packet拦截
• 拦截管理器维护两个列表,一个是全局拦 截器列表,另一个是用户拦截器列表 • 全局拦截所有流经Openfire的Packet包。 • 用户拦截器拦截所有和该用户有关的Packet 包。
• 在所有送入和送出的包做处理前后,拦截 管理器都会拦截包做相关处理
Openfire简介
1、为什么选择Openfire?
• • • • • • 完全开源,GPL协议; 完全JAVA语言实现,不依赖任何系统平台; 基于成熟的XMPP协议; 基于可扩展的WEB控制管理界面; 基于插件的开发框架,高可扩展性; 稳定,支持上万并发用户。
2、Openfire框架
——模块图
当我们访问Plain Page, Web.xml里面配置的 Sitemesh过滤器会自动给 Plain Page装饰。这些装饰 一般都是菜单,通过定义 模板+配置文件可以实现。 为插件实现页面提供了可 能。
4、Openfire内部处理 ——Packet拦截程图
注册自定义 拦截器到拦 截管理器
XMPP与MINA1

openfire和mina(一)2009-06-04 17:51 2144人阅读评论(3) 收藏举报看了几天的openfire,网上的资料太少了,只有一个国外的网站不错,/,其他的只能自己摸索了。
openfire启动:ServerStarter会加载org.jivesoftware.openfire.XMPPServer在XMPPServer会加载一系列模块其中的ConnectionManagerImpl 是连接模块// Load this module always last since we don't want to start listening for clients // before the rest of the modules have been startedloadModule(ConnectionManagerImpl.class.getName());ConnectionManagerImpl 会启动一系列的监听。
其中的createClientListeners和startClientListeners是我比较关心的,先看看再这里面openfire都做了什么!private void createClientListeners() {// Start clients plain socket unless it's been disabled.if (isClientListenerEnabled()) {// Create SocketAcceptor with correct number of processorssocketAcceptor = buildSocketAcceptor();// Customize Executor that will be used by processors to process incoming stanzasExecutorThreadModel threadModel = ExecutorThreadModel.getInstance("client" );int eventThreads = JiveGlobals.getIntProperty("xmpp.client.processing.threads" , 16);ThreadPoolExecutor eventExecutor =(ThreadPoolExecutor)threadModel.getExecutor();eventExecutor.setCorePoolSize(eventThreads + 1);eventExecutor.setMaximumPoolSize(eventThreads + 1);eventExecutor.setKeepAliveTime(60, TimeUnit.SECONDS );socketAcceptor .getDefaultConfig().setThreadModel(threadModel);// Add the XMPP codec filtersocketAcceptor .getFilterChain().addFirst("xmpp" , new ProtocolCodecFilter(new XMPPCodecFactory()));// Kill sessions whose outgoing queues keep growing and fail to send trafficsocketAcceptor .getFilterChain().addAfter("xmpp" , "outCap ", new StalledSessionsFilter());}}对了这里就是和用的mian框架去做联网处理,首先设置mina框架的线程池,然后把由XMPPCodecFactory做为ProtocolCodecFilter的chain添加到FilterChain中!然后private void startClientListeners(String localIPAddress) {// Start clients plain socket unless it's been disabled.if (isClientListenerEnabled()) {int port = getClientListenerPort();try {// Listen on a specific network interface if it has been set.String interfaceName = JiveGlobals.getXMLProperty("network.interface");InetAddress bindInterface = null;if (interfaceName != null) {if (interfaceName.trim().length() > 0) {bindInterface = InetAddress.getByName(interfaceName);}}// Start accepting connectionssocketAcceptor.bind(new InetSocketAddress(bindInterface, port), new ClientConnectionHandler(serverName));ports.add(new ServerPort(port, serverName, localIPAddress, false, null, ServerPort.Type.client));List<String> params = new ArrayList<String>();params.add(Integer.toString(port));(LocaleUtils.getLocalizedString("startup.plain", params));}catch (Exception e) {System.err.println("Error starting XMPP listener on port " + port + ": " +e.getMessage());Log.error(LocaleUtils.getLocalizedString("admin.error.socket-setup"), e);}}}socketAcceptor.bind(new InetSocketAddress(bindInterface, port), new ClientConnectionHandler(serverName));将ClientConnectionHandler作为数据处理服务器去监听5222端口去了,mina真方便!关于MINA框架可以去网上找找资料,这里就不说了。
Xmpp与Openfire介绍

XMPP介绍可扩展的消息和出席信息协议(XMPP)是一个XML应用,让任何两个或多个网络实体之间进行结构化和可扩展的准实时信息交流. 本文定义了XMPP的核心协议方法: XML流的配置和解除, 通道加密, 验证, 错误处理, 以及消息通讯基础, 网络可用性("presence"), 和请求-应答交互。
XMPP的目标是允许两个(或多个)实体通过网络来交换相关的小件结构化数据(所谓"XML节"). XMPP典型地使用分布式的客户端-服务器体系结构来实现, 这里客户端需要连接到一个服务器以获得对网络的访问,从而被允许和其他实体(可能在其他服务器上)交换XML节. 一个客户端连接到一个服务器,交换XML节,以及结束连接,这样的流程如下:1. 确定要连接的IP地址和端口号, 典型的做法是对一个合格的域名做出解析2. 打开一个传输控制协议TCP连接3. 通过TCP打开一个XML流4. 握手最好使用传输层安全性TLS来进行通道加密5. 使用简单验证和安全层SASL机制来验证6. 绑定一个资源到这个流上7. 和其他网络上的实体交换不限数量的XML节8. 关闭XML流9. 关闭TCP连接在XMPP中, 一个服务器可以选择性地连接到另一个服务器以激活域间或服务器间的通讯. 这种情形下, 两个服务器需要在他们自身之间建立一个连接然后交换XML节; 这个过程所做的事情如下:1. 确定要连接的IP地址和端口号, 典型的做法是对一个合格的域名做出解析2. 打开一个TCP连接3. 打开一个XML流4. 握手最好使用TLS来进行通道加密5. 使用简单验证和安全层SASL机制来验证6. 交换不限数量的XML节,可以服务器之间直接交换,也可以代表每台服务器上的相关实体来交换,例如那些连到服务器上的客户端7. 关闭XML流8. 关闭TCP连接XMPP协议组成主要的XMPP 协议范本及当今应用很广的XMPP 扩展:RFC 3920 XMPP(RFC6120 新):核心。
openfire环境搭建

Openfire环境搭建Linux:ubuntu 12.10Win:Windows 7版本:Openfire 3.9.1 Spark 2.6.3 Java统一使用6u45这个版本1Openfire服务器部署(非源码)1.1 Win下:1、安装jdk2、在openfire官网igniterealtime中下载win版的openfire,下载完成后,如果你下载的是exe文件,执行你的安装文件,进行安装。
这里我是zip的文件。
解压后,复制openfire目录到C:\Program Files\目录下;一定要在C:\Program Files\目录下的;这样openfire就安装完成了。
3、启动openfire服务器,并配置它。
在C:\Program Files\openfire\bin目录下有一个电灯泡的openfire.exe文件,双击执行,启动完成后可以看到4、点击Launch Admin按钮进入http://127.0.0.1:9090/setup/index.jsp页面,配置openfire服务器5、后面是选择语言,配置服务器域名。
选择数据库,这里可以选择openfire自带的数据库,即嵌入的数据库。
选择特性配置,默认即可。
管理员邮件,可跳过。
完成安装。
6、进入http://127.0.0.1:9090/login.jsp页面后,输入admin、密码admin登陆进入7、进入后可以看到:1.2 Ubuntu下:1、先去甲骨文官网下载安装jdk(选择Linux x64 或者Linux x86对应链接,注意不要选择rpm.bin的,选择.bin,6u45对应的是jdk-6u45-linux-i586.bin),也不要使用ubuntu自带的openjdk2、安装全程需要root权限,首先获取root权限sudo –s5、然后就是要告诉系统,我们使用的sun的JDK,而非OpenJDK了(注意下面的2行命令--install后面一共四个参数分别是链接名称路径优先级,我们只要修改对应的6、openfire官网下载Linux版的openfire:openfire_3.9.1_all.deb(这个直接双击通过ubuntu软件中心安装),经过以上软件已经完成安装,此时需要修改一下openfire的启动文件如果openfire没有启动,可以通过/etc/init.d/openfire start启动服务。
openfire开发环境配置说明

Openfire开发环境配置说明1、Mysql数据库的安装1.1、方法/步骤1.1安装:双击Setup.exe文件,开始mysql的安装。
出现下面的窗口2. 2点击Next开始下一步安装。
默认是Typical,选择Custom,因为Typical模式不允许改变安装路径,只能安装在C盘3. 3这里需要选择组件和更改文件夹位置,组件可以默认的,位置要选择Change 来改变(注意:安装mysql的路径中,不能含有中文)4. 4 点击Install开始安装5. 5安装完成,看到下面。
当然,我们选择“Skip Sign-Up”。
6. 6点击完成“Finsh”7.7现在开始配置的工作了。
点击Next继续。
选择Detailed Configuration,点Next。
8.下面这个选项是选择mysql应用类型(第一种是开发服务器,将只用尽量少的内存,第二种是普通WEB服务器,将使用中等数量内存,最后一种是这台服务器上面只跑mysql数据库,将占用全部的内存,)这里示例选择开发服务器,占用尽量少的内存,用户可根据自己的需求,选择其他选项。
9.接下来选择数据库用途,(第一种是多功能用途,将把数据库优化成很好的innodb存储类型和高效率的myisam存储类型,第二种是只用于事务处理类型,最好的优化innodb,但同时也支持myisam,最后一种是非事务处理类型,适合于简单的应用,只有不支持事务的myisam类型是被支持的。
)一般选择第一种多功能。
10.下面是选择数据存放位置,默认。
11.选择mysql允许的最大连接数,第一种是最大20个连接并发数,第二种是最大500个并发连接数,最后一种是自定义,你可以根据自己的需要选择12.下面是选择数据库监听的端口,一般默认是3306,如果改成其他端口,以后连接数据库的时候都要记住修改的端口,否则不能连接mysql数据库,比较麻烦,这里不做修改,用mysq的默认端口:3306。
Openfire安装配置

一、环境操作系统:Windows XP SP3Web服务器:Tomcat 6.0.18.0Java Version:1.6.0_21Jvm Version:1.6.0_21-b07Openfire服务器:Openfire 3.7.0 Openfire Plugin:Fastpath Service 4.2.0Fastpath Webchat 4.0.0二、Opernfire环境安装配置1. Openfire下载目前最新版为3.7.0下载地址:/downloads/index.jsp分为两个版本,一个是包含了JRE的安装版本,另外一个是不包含JRE的版本。
也可以分别通过下面两个链接直接下载。
/downloadServlet?filename=openfire/openfire_3_7_0.exe/downloadServlet?filename=openfire/openfire_3_7_0.zip2. Openfire安装将下载的openfire_3_7_0.zip解压。
Openfire的全路径中不能有中文字符,最好主机名也是标准点的英文名称。
3. 运行Openfire服务器直接运行服务器文件。
安装目录\Openfire\bin\openfire.exe。
出现启动界面点击“Launch Admin”,或者在浏览器地址栏输入http://127.0.0.1:9000,进入Opernfire 管理控制台。
初次会进入Openfire设置界面,对Openfire进行初始设置。
3. Openfire初始设置3.1 语言选择:中文(简体)3.2 服务器设置:设置域及服务器管理端口3.3 数据库设置:有两个选项,分别是标准数据库连接和嵌入的数据库。
3.3.1 标准数据库连接,可以使用其他外部的数据库,目前支持5种外部数据库(MySQL、Oracle、Microsoft SQLServer、PostgreSQL、IBM DB2)3.3.2 嵌入的数据库,使用Openfire自带的嵌入式的数据库设置管理员账户的电子邮箱以及管理员登录管理控制台时的密码。
openfire部分类说明

g) 管理者类:
i. RosterManager:管理Roster,每个花名册可以广播用户状态给好友。
ii. PrivacyListManager:管理PrivacyList,如果不阻止联系人就发给他状态,使用PrivacyListProvider从数据库加载隐私列表。
g) VCardManager:用户名片管理。
3. standard modules:
a) IQHandler:全部被交给。IQBindHandler:处理绑定资源请求;IQSessionEstablishmentHandler:绑定资源后激活会话;IQAuthHandler:处理登录请求;IQPingHandler:处理ping请求;IQPrivateHandler:处理隐私请求;IQPrivacyHandler:处理私有列表请求;IQRegisterHandler:处理注册请求;IQRosterHandler:处理花名册请求;IQTimeHandler:处理时间请求。IQvCardHandler:处理名片请求;IQVersionHandler:处理版本请求;IQLastActivityHandler:处理最近活动请求;IQOfflineMessagesHandler:处理获取离线留言请求;IQPEPHandler:处理公共订阅请求;IQPEPOwnerHandler;IQSharedGroupHandler:处理共享组请求;AdHocCommandHandler:处理命令请求;IQDiscoInfoHandler;IQDiscoItemsHandler。
openfire参数

openfire参数
Openfire是一个开源的即时通讯服务器,用于构建和管理企业级即时通讯系统。
它具有丰富的功能和灵活性,可以提供安全、可靠的实时消息传递服务。
在使用Openfire时,可以通过配置文件或命令行参数来设置服务器的一些参数。
以下是一些常见的Openfire参数的示例:
1. `--debug`: 启用调试模式,输出详细的日志信息,用于排查问题。
2. `--config`: 指定配置文件的路径。
可以使用自定义的配置文件来覆盖默认配置。
3. `--port`: 指定服务器监听的端口号。
默认情况下,Openfire使用5222端口提供客户端连接。
4. `--adminconsole.port`: 指定管理控制台的端口号。
默认情况下,Openfire使用9090端口提供Web管理界面。
5. `--adminconsole.host`: 指定管理控制台的主机名或IP地址。
6. `--adminconsole.contextPath`: 指定管理控制台的上下文路径。
7. `--proxy.externalip`: 指定外部代理服务器的IP地址或主机名。
用于配置Openfire在防火墙/代理后的部署。
8. `--proxy.port`: 指定外部代理服务器的端口号。
这只是一小部分Openfire可用的参数示例,实际使用时可以根据需求和环境进行适当的配置。
您可以参考Openfire的官方文档或使用`openfire --help`命令获取更多参数的详细说明。
openfire学习笔记

openfire学习笔记一、概念1、OpenFireOpenfire 采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议。
可以使用它轻易的构建高效率的即时通信服务器。
Openfire安装和使用都非常简单,并利用Web进行管理。
单台服务器可支持上万并发用户。
由于是采用开放的XMPP协议,可以使用各种支持XMPP协议的IM客户端软件登陆服务。
2、XMPP(Jabber)协议1、介绍XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。
因此,基于XMPP 的应用具有超强的可扩展性。
经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。
而且,XMPP 包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。
2、XMPP协议的优点a. XMPP 协议是公开的,由JSF开源社区组织开发的。
b. XMPP 协议具有良好的扩展性。
c. 分布式的网络架构。
d. XMPP 具有很好的弹性。
e. 安全性。
3、XMPP消息格式XMPP中定义了3个顶层XML元素: Message、Presence、IQ,下面针对这三种元素进行介绍。
用于在两个jabber用户之间发送信息。
Jsm(jabber会话管理器)负责满足所有的消息,不管目标用户的状态如何。
如果用户在线jsm 立即提交;否则jsm就存储。
To : 标识消息的接收方。
from : 指发送方的名字或标示(id)Text: 此元素包含了要提交给目标用户的信息。
结构如下所示:你好,在忙吗。
openfire源代码研究

Openfire源码研究Openfire源码目录结构1.build目录:build目录下收录的是生成安装文件(例如:rpm)所要的一些文件,例如JRE等。
2.resources目录:resources目录下收录的是一些为实现国际化(i18n)和本地化的一些编码文件(例如:英文,中文,法文,德文等)。
3.documentation目录:documentation目录下收录的是一些关于Openfire安装和配置的信息,但最终要的是这里有Openfire开发的Javadoc。
4.src目录:顾名思义这个src文件夹就是我们想要的Openfire源代码了,这下面又有许多文件夹,我们只要Java文件夹就好,这里面实现的Openfire的核心功能,通过它就可以调试Openfire了。
命名规则Openfire中常见的类名后缀命名包括Starter、Plugin、Listener、Dispatcher、Handler、Manager、Provider,通常情况下,这些命名类包括如下意义:XXStarter系统启动类,如org.jivesoftware.openfire.starter.ServerStarter,调用其start()方法可启动系统应用。
XXListener业务的最终处理类。
XXDispatcher调度类,其中有很多关键方法,如addListener(),以组合的方式,为类内定义的静态Set<XXListener>实例添加XXListener对象。
以便调用dispatchEvent(String property, EventType eventType, Map<String, Object> params)方法遍历处理Set集中的XXListener对象(通过调用XXListener对象的各实际方法完成实际业务)。
XXPlugin实现Plugin接口的插件类,需实现initializePlugin(PluginManager manager, File pluginDirectory)方法和destroyPlugin()方法。
openfire 原理

openfire 原理Openfire是一个基于XMPP协议的实时通信服务器,它的原理是通过客户端与服务器之间的交互,实现用户之间的即时通信。
下面将详细介绍Openfire的工作原理。
1. Openfire的通信模型Openfire采用的是C/S架构,即客户端-服务器模型。
客户端负责与用户进行交互,发送和接收消息,而服务器则负责维护用户信息、路由消息以及保证消息的可靠传输。
2. 用户注册与登录用户在Openfire上注册账号时,需要提供用户名和密码等信息,服务器会将这些信息保存在数据库中。
当用户登录时,客户端向服务器发送登录请求,服务器验证用户的身份信息,如果验证通过,则可以进行后续的通信操作。
3. 路由消息Openfire服务器通过路由消息来实现用户之间的消息传递。
当一个用户发送消息时,消息首先会被客户端发送到服务器,服务器根据目标用户的JID(Jabber Identifier)将消息路由到相应的客户端。
4. Presence机制Presence机制是Openfire中重要的一部分,它用于表示用户的在线状态。
当用户登录时,客户端会发送一个presence包给服务器,服务器会将用户的在线状态信息存储起来,并通知其他用户。
其他用户可以根据这些信息来判断用户的在线状态,从而进行相应的操作。
5. 群组聊天Openfire支持群组聊天功能,用户可以创建群组并邀请其他用户加入。
当用户发送消息到群组时,服务器会将消息路由到所有群组成员的客户端。
6. 插件扩展Openfire提供了插件扩展的机制,可以通过插件来增加额外的功能。
例如,可以通过插件实现文件传输、语音通话等功能,从而满足不同用户的需求。
7. 安全性Openfire支持加密通信,可以通过SSL/TLS协议对通信进行加密,保证数据的安全性。
此外,Openfire还提供了用户认证机制,可以通过用户名和密码、LDAP等方式对用户进行身份验证。
总结:Openfire是一款功能强大的实时通信服务器,它通过客户端与服务器之间的交互,实现用户之间的即时通信。
Openfire_spark_安装手册

Openfire+Spark安装手册王保政QQ:29803446Msn:baozhengw999@关键字:快速开发平台openjweb 增删改查即时通信2009-8-29目录第一章JA VA领域的IM解决方案 (3)第二章安装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使用smack的API向openfire 注册用户发送消息,并且可以通过监听器获得此用户的应答消息。
通过smack向msn用户和QQ用户,gtalk用户发送消息应该也可以实现,关于向gtalk 用户发送消息的例子较多。
这个留待以后研究。
至少目前可以通过程序向spark发消息了。
对于局域网内部应用足以解决系统与用户交互的问题,甚至可以做自动应答机器人。
openfire开发文档

Openfire开发文档修订记录目录1OPENFIRE项目工程搭建及调试 (1)1.1准备工作 (1)1.2解压源码 (1)1.3创建工程 (2)1.4编译 (3)1.5配置调试与运行环境 (5)1.6打包发布 (10)2OPENFIRE代码框架介绍 (10)2.1框架 (11)2.1.1Module (11)2.1.2数据流 (13)2.2O PENFIRE与MIMA (13)2.3M ULTI-U SER-C HAT (14)2.3.1MUCUser (14)2.3.2MUCRole (15)2.3.3MUCRoom (15)2.3.4MultiUserChatServiceImpl (15)2.3.5时序图 (16)2.4P UB-S UB (16)2.4.1Node (16)2.4.2NodeAffiliate (17)2.4.3NodeSubscription (17)2.4.4PubSubModule (17)2.4.5PubSubEngine (18)2.4.6时序图 (18)2.5插件开发 (19)2.5.1注册为组件 (19)2.5.2注册为拦截器 (19)2.5.3注册为IQHandler (20)2.6命名规则 (21)2.6.1XXStarter (21)2.6.2XXListener (21)2.6.3XXDispatcher (21)2.6.4XXPlugin (21)2.6.5XXProvider (21)2.6.6XXHandler (22)2.7系统配置项 (22)2.8系统启动流程 (23)2.9网络处理 (23)2.9.1presence(出席状态)消息处理流程 (23)2.9.2消息监听服务 (25)2.9.3消息封装 (26)2.9.4Openfire消息包接受处理流程 (27)2.10数据库处理 (28)2.10.1Openfire连接数据库修改 (28)2.10.2ConnectionProvider (28)2.10.3处理方式 (28)2.10.4常用类 (28)3OPENFIRE插件开发流程 (29)3.1O PENFIRE P LUGINS加载流程 (29)3.2开发说明 (29)3.2.1总体插件目录结构 (30)3.2.2编写Plugin.xml (30)3.2.3继承Plugin接口 (33)3.2.4插件开发的最优方法 (34)3.2.5JSP页面配置步骤 (34)3.2.6i18n国际化配置 (37)3.2.7Ant build 插件 (38)4OPENFIRE 的CACHE机制 (39)4.1实现机制 (39)1Openfire项目工程搭建及调试Openfire的最新源码3.7.1下源码的运行及打包1.1 准备工作开发工具:Eclipse源码下载:官网地址/downloads/source.jsp,当前最新版本为3.7.1。
rooyee+openfire

用Openfire架设自己的即时聊天服务器(一)----客户端是rooyee的配置说明/html/wendangzhongxin/2009/0324/18.htmlopenfire的安装方法很多一、安装环境操作系统:Windows XP Prefessional SP2服务器软件:Openfire 3.4.2Openfire Enterprise 3.4.2客户端软件:rooyee 2.0二、安装Jabber服务器软件1.软件下载Jabber官网地址:/常用Jabber服务器软件:/software/servers.shtml本文以Openfire(Wildfire)为服务器,一款基于GPL协议开源软件,支持各种操作系统,软件需要java环境支持,不过软件本身自带了环境包,你可以根据你的需要下载不同的版本。
下载地址:/downloads/index.jsp#openfireWindows无java环境版本地址:/downloadServlet?filename=openfire/openfire_3_4_2.zi p最新版本:Openfire 3.4.22.Windows版本安装将openfire_3_2_2.zip解压缩到D:\。
特别要注意,openfire的全路径中不能有中文字符,最好主机名也是标准点的英文名称。
直接运行安装文件,D:\Openfire\bin\openfire.exe3.Openfire服务器配置浏览器地址栏中输入http://localhost:9090/即可开始即时通讯服务器配置。
(1)语言选择:中文简体(2)服务器设置:选择域及端口,建议默认(3)数据库设置:选“标准数据库”(4)标准数据库设置:将oracle驱动放在openfire的lib目录下。
在数据库驱动选项栏选择Oracle。
数据库URL填入你的数据库地址,端口和数据库名称,以及用户名和密码(需要在安装前创建),最大连接数,最小连接数和连接超时时间可自行调整。
openfire_plugin开发流程

Openfire插件开发流程1.插件结构:testplugin/|- plugin.xml <-配置文件|- readme.html <-用户说明|- changelog.html <-更新日志|- icon_small.gif <-小图标|- icon_large.gif <-大图标|- src/<-存放编译的类文件夹|- database/<-存放数据库改动|- i18n/<-国际化|- lib/<-插件所需要的类库|- web <-显式调用插件时需要的Web页面|- WEB-INF/|- web.xml <-Web配置|- web-custom.xml <-Web配置|- images/2.加入插件目录文件:在eclipse的openfire项目文件夹openfire_src\src\plugins下手动新建一个插件文件夹,定义名为testplugin,进入文件夹根据需要新建以上文件夹或文件,其中web、i18n、icon、database 都不是必须的,可以只创建src文件夹和plugin.xml文件。
在建立的src文件夹下依次创建文件夹java,org,jivesoftware,openfire,plugin,形成src\plugins\testplugin\src\java\org\jivesoftware\openfire\plugin的目录结构。
在最底层,即plugin文件夹下建立java类,起名为TestPlugin.java。
修改建立好的plugin.xml :<?xml version="1.0" encoding="UTF-8"?><plugin><!—插件主类,必须要的 --><class>org.jivesoftware.openfire.plugin.TestPlugin</class><!—插件信息 --><!—插件名称 --><name>Plugin</name><!—插件描述信息 --><description>Test Plugin</description><!—插件作者 --><author>Aaron</author><!—插件版本 --><version>1.0.0</version><!—插件日期,必须格式为MM/dd/yyyy --><date>12/24/2007</date><!—插件需要的openfire最小版本 --><minServerVersion>3.4.1</minServerVersion><!—插件许可类型--><licenseType>gpl</licenseType><!—Web界面需要配置,没有界面则保留<adminconsole>空标签即可 --><adminconsole><tab id="mytab"name="Example"url="my-plugin-admin.jsp"description="Click to manage..."><sidebar id="mysidebar"name="My Plugin"><item id="my-plugin"name="My Plugin Admin"url="my-plugin-admin.jsp"description="Click to administer settings for my plugin"/> </sidebar></tab></adminconsole></plugin>保存退出。
消息推送技术方案

2 设计原则及约束 ............................................................................................................... 2 3 需求 ................................................................................................................................... 3
返回查询结果
收到好友添加指令 发送消息给好友
收到同意指令
更新双方好友列表
发送消息给添加人
Openfire源码分析—图文兼备

Openfire源码分析1. OpenfireOpenfire是开源的实时协作服务器(R TC),它是基于公开协议XMPP(也成为Jabber)消息的。
Openfire的核心功能可以概括为:连接管理、消息解析、消息路由、消息发送。
1.1 框架Openfire核心功能由Module组成,上图中的各个模块绝大多数也是基于Module实现的。
为了动态的管理这些Module,Openfire使用了自己的类加载器JiveClassLoader,这样就可以在不重新启动系统的前提下进行Module的安装、卸载和重新加载。
1.2 ModuleOpenfire在启动时就加载了所有的Module,这些Module提供了Openfire的核心功能。
所有Module都需要实现Module接口,该接口中定义了模块生命周期中需要调用的方法,如下图所示:1.3 数据流2. Openfire与MIMAMINA是Apache组织下的一个项目,它可以帮助用户轻松的开发高性能和高扩展性的网络应用。
MINA提供了一个抽象的、支持各种传输协议的(如TCP/IP、UDP/IP)、基于Java NIO的异步事件驱动的API。
Openfire的ConnectionHandler类继承了MINA的IoHandlerAdaper,他主要负责连接的创建、销毁,以及接收到XML数据包的投递。
ConnectionHandler有三个子类,其中ClientConnectionHandler负责客户端与服务器端的连接,Com ponentConnectionHandler负责组件与服务器端的连接。
3. Multi-User-Chat多人聊天的消息是绑定在子域conference上的,对应的Com ponent是MultiUserChatServiceIm pl。
在多人聊天中,涉及到的实体与关系有:用户、聊天室、用户与聊天室的关系,MultiUserChatServiceIm pl就负责这些实体与关系的维护以及消息的投递。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.1.1.查看好友资料:
1)可以查看好友的详细资料。
2)通过openfire向v5查询
接口参数:好友名
返回参数:好友对象
接口说明:openfire向v5提供的接口中传入好友名,返回好友对象;
1.1.
2.发送好友邀请:
1)可以向好友发送邀请,添加对方为好友,等待对方验证。
2)和openfire交互
3)openfire和v5交互v5接口
接口参数:好友名
返回参数:两个标示(是拒绝)
接口说明:openfire将被邀请的用户用户名提供给v5,返回标示并推给被邀请用户;
1.1.3.接受好友邀请:
1)当收到对方发送来的好友邀请时,可以接受对方的邀请,或者拒绝。
2)openfire交互
3)openfire和v5交互v5接口
接口参数:邀请标示(是或拒绝)
返回参数:是否添加
接口说明:openfire将被邀请用户选择的标示提供给v5;v5通过标示判断是否添加,返回是否添加,openfire接受到返回信息后将备注信息推给被邀请用户
1.1.4.删除好友:
1)将某个好友删除后,该好友不出现在联系人名单中。
2)openfire交互
3)openfire和v5交互v5接口
接口参数:好友名
返回参数:是否删除成功
1.1.5.读取好友分组:
1)从平台读取好友分组,并显示分组。
接口参数:当前用户名
返回参数:好友集合
1.1.6.显示头像:
1)显示好友头像
2)openfire代理v5交互接口
1.1.7.显示名称:
4)显示好友名称和签名。
5)openfire代理v5交互
1.1.8.读取并显示团队信息:
6)从平台读取团队设置信息并显示。
7)openfire代理v5交互,v5的团队信息接口
8)openfire的聊天室信息+
接口参数:团队的唯一标示
返回参数:团队对象
1.1.9.显示团队图标:
9)显示图标
10)openfire代理v5交互
1.1.10.读取组织机构信息:
11)从平台读取组织机构信息(具有层级关系)并显示。
12)openfire代理v5交互
1.1.11.显示图标:
13)显示图标
14)openfire代理v5交互
1.1.1
2.显示图标:
15)显示图标
1.1.13.读取最近联系人:
17)从平台读取最近联系人列表并显示。
18)openfire代理v5交互
接口参数:当前用户名
返回参数:最近联系人集合
1.1.14.清空最近联系人:
19)向平台发送请求清空最近联系人列表。
20)openfire代理v5交互
接口参数:当前用户名
返回参数:是否清空成功
1.1.15.显示图标:
21)显示图标。
22)openfire代理v5交互
1.1.16.选择表情:
23)选择平台预设的表情,并加入到聊天内容中。
24)openfire从v5获得表情
25)openfire发送表情
接口参数:表情标示
返回参数:表情对象
1.1.17.个人信息设置:
26)名称、头像、个性签名等。
27)Openfire和v5交互
接口参数:当前用户的所有信息(Map)
返回参数:设置是否成功。