
openfire
hunhun1122
每天进步一点点。
展开
-
OpenFire源码学习之十七:HTTP Service插件
HTTP Service插件这里的http接口插件是神马?Openfire主要是在消息推送,那么与其他系统的的消息怎么结合呢,那么这里这个HTTP Service插件就提供了一个基于HTTP的接口。为什么要提供这样的接口?在有些互联网的场景。一个用户平台可以是web的,当然也会有移动终端的APP,那么web端要给移动终端的APP发送消息就依赖这样的接口了。当然这里只是一种实现方式。原创 2018-02-05 10:47:42 · 554 阅读 · 0 评论 -
OpenFire源码学习之十八:IOS离线推送
IOS离线推送场景:如果您有IOS端的APP,在会话聊天的时候,用户登陆了但可能会退出了界面。这时候其他终端给目标端发送消息时候,消息可以发送到IOS的推送服务器。用过QQ的都知道,你会有哦一条消息在您的主屏上展示。这个就是利用了IOS的推送服务器呢。那么openfire只需要判断用户不在线的时候将消息推送给IOS端。苹果服务器的消息推送都需要手机的唯一标志,也就是唯一的终原创 2018-02-05 10:49:03 · 376 阅读 · 0 评论 -
OpenFire源码学习之十九:在openfire中使用redis插件(上)
Redis插件介绍Redis是目前比较流行的NO-SQL,基于K,V的数据库系统。关于它的相关操作信息,本人这里就不做重复了,相关资料可以看这个网站http://www.redis.io/(官网)、http://www.redis.cn/(中文站)。这里本人想说的是,拿Redis做openfire的缓存数据库。能够大大的提高openfire连接的吞吐量。Openfire自身原创 2018-02-05 10:54:09 · 876 阅读 · 0 评论 -
OpenFire源码学习之二十:在openfire中使用redis插件(下)
Redis插件实现首先来看下插件目录:RedisServicePlugin源码清单:[java] view plain copyimport java.io.File; import java.sql.Connection; import java.sql.PreparedStatement;原创 2018-02-05 10:55:13 · 474 阅读 · 1 评论 -
OpenFire源码学习之二十一:openfie对用户的优化(上)
用户类优化用户主要是要解决用户的连接量。已经对用户的访问速度和吞吐量。预初始化在前面的带面中提出来了用户的预初始化。这里就不在贴出来了。下面将redis用户库连接池处理贴出来UserJedisPoolManager[java] view plain copypublic class UserJedisPoolManag原创 2018-02-05 10:56:21 · 342 阅读 · 0 评论 -
OpenFire源码学习之二十二:openfie对用户的优化(下)
用户名片在预初始化中,贴出来用户名片的程序。这里也一样不在重复。首先同样先修改系统属性:provider.vcard.classNameorg.jivesoftware.util.redis.expand.RedisVCardProvider然后需要修改VCardManager名片管理这个类。RedisVCardPro原创 2018-02-05 10:57:22 · 306 阅读 · 0 评论 -
OpenFire源码学习之二十三:关于消息的优化处理
消息处理之前有说过,openfire的消息处理策略本人并不是很喜欢。先看下openfire上脱机消息策略。个人认为消息关于会话的消息,用户的存储量应该无限大。服务器不应该被消息吃撑了。所谓聊天通讯,这一关很重要。Openfire的消息是什么流程呢。1、当用户登陆连接的时候。握手、认证、绑定资源、获取花名册、获取离线消息。2、服务端会查找关原创 2018-02-06 11:18:45 · 425 阅读 · 0 评论 -
OpenFire源码学习之二十四:消息回执与离线消息(上)
在上一篇提到了4个问题,现在开始回答第三个第四个问题。由于篇幅问题。这里就设置成了上下两篇消息回执这个是第三个问题,如何做消息回执。消息回执分为两种:1、普通消息2、延迟消息3、离线消息 普通消息普通消息是客户端正常的点对点发送聊天消息。格式大致如下:[html] view plain co原创 2018-02-06 11:19:28 · 1160 阅读 · 0 评论 -
OpenFire源码学习之二十五:消息回执与离线消息(下)
这一篇紧接着上面继续了。方案二基于redis的消息回执。主要流程分为下面几个步骤:1)将消息暂存储与redis中,设置好消息的过期时间2)客户端回执消息id来消灭暂存的消息3)开通单独线程论坛在第1)步中的消息。根据消息的时间重新发送消息。如果消息第一次存放的时间大雨有效期(自定义10秒),解析消息中的to查找用户是否还在线。如果在则T掉(因原创 2018-02-06 11:20:07 · 596 阅读 · 0 评论 -
OpenFire源码学习之二十六:Spark&Tinder
因为这两块比较简单,内容也比较少。所以就放一块了。Spark这里的spark是指openfire的一个客户端,并非目前非常流行的大数据计算框架spark。Spark页面图:Spark的源码构建Spark的源码构建和openfire都差不多。也都非常的简单。源码目录如下:Spark也是用ant来编原创 2018-02-06 11:20:42 · 610 阅读 · 0 评论 -
OpenFire源码学习之二十七:Smack源码解析
SmackSmack是一个用于和XMPP服务器通信的类库,由此可以实现即时通讯和聊天。Android中开发通讯APP也可以使用这个包。关于smack的中文开发文档,目前网上也有很多。下面本,将从源码中分析smack的几个案例。连接关于smack的Connection是连接XMPP服务器的默认实现。他有两个构造函数,一个是XMPPConecttion(Stri原创 2018-02-06 11:21:31 · 412 阅读 · 0 评论 -
OpenFire源码学习之二十八:与其他系统的用户整合
与三方系统整合。Openfire提供了一套不错的解决方案。其实openfire的用户插件也做http方式的用户数据同步。关于openfire的用户整合,本人也不是十分赞同(这仅仅只是在我们自己的项目下)。我们的办法是做数据共享池。这个解决方案可以用到redis。下面是opnfire的 解决方案openfire可以非常方便的整合现有系统用户。 进入openfire管理控制台-服务器-原创 2018-02-06 11:22:00 · 291 阅读 · 0 评论 -
OpenFire源码学习之二十九:openfire集群配置
集群Openfire的给集群提供了多种方案。一种是基于Hazelcast插件,还有基于Oracle的coherence插件。Oracle的coherence插件中文开发文档:http://download.youkuaiyun.com/detail/huwenfeng_2011/8423519Linux集群配置一、修改配置文件/etc/hosts文件open原创 2018-02-06 11:23:44 · 661 阅读 · 0 评论 -
OpenFire源码学习之三十:haproxy负载均衡
安装使用Haproxy做负载均衡。下载地址:http://www.haproxy.com/downloads/trial-versions/下载后解压:tar zcvf haproxy-1.3.20.tar.gzcd haproxy-1.3.20make TARGET=linux26 PREFIX=/usr/local/haprpxymake原创 2018-02-06 11:24:12 · 412 阅读 · 0 评论 -
OpenFire源码学习之三十一:使用Tsung测试openfire(上)
介绍一个开源的多协议分布式负载测试工具,使用erlang语言开发的。它能用来压力测试HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP 和 Jabber/XMPP的服务器。它可以分布在多个客户机,并能够模拟成千上万的虚拟用户数并发。相关文件安装由于我们采用的是tar.gz安装文件,因此安装工具之前必须确保你的linux系统已经安装完毕gc原创 2018-02-06 12:51:50 · 305 阅读 · 0 评论 -
OpenFire源码学习之三十二:使用Tsung测试openfire(下)
Tsung使用由于我们只是对openfire进行测试,因此我们主要讲解利用jabber_register.xml在openfire上面注册用户,以及利用jabber.xml模拟用户登录openfire上线、离开、会话操作的压力测试。注册用户1、执行以下命令进入到安装目录下的examples目录:# cd /usr/local/tsung/share/doc/tsun原创 2018-02-06 12:52:26 · 335 阅读 · 0 评论 -
OpenFire源码学习之十六:wildfire
WildfireWildfire是一个基于xmpp的IM即时通讯和群组聊天工具。安装Windows Windows的默认安装目录 c:\ProgramFiles\WildfireLinux/Unix 有两种选择方法: 1.选择RPM :它将安装到/opt/wildfire原创 2018-02-05 10:46:26 · 304 阅读 · 0 评论 -
OpenFire源码学习之十五:插件开发
Plugin接口规范插件是openfire功能的增强表现,它的主要任务:l 在XMPP协议中作为附加功能实现l 动态修改控制管理台l 使用openfire api作为新功能添加到服务器Openfire里面的插件都会存放在plugins(工程目录为:src/plugins)的住目录下。使用ant工具编译后插件会打成jar包生成在target/openfi原创 2018-02-05 10:45:49 · 279 阅读 · 0 评论 -
openfire配置
经过了近3天的时间终于搞定了openfire3.9.1源码的部署,因为最新的是3.9.1所以和其他的版本多多少少还是有些区别的!1、下载源码官网下载:http://www.igniterealtime.org/downloads/source.jsp,一般比较喜欢在官网上下!或者可以到我的百度网盘上下,http://pan.baidu.com/s/1jG4wvci!转载 2016-09-08 14:57:46 · 1873 阅读 · 0 评论 -
ConnectionManager.getConnection() failed to obtain a connection after 11 retries. The exception from
openfire 报错:原因:代码是不是编译过的,已经配置了数据库。查看targer/openfire/conf/openfire.xml配置文件的配置信息。原创 2016-09-21 21:23:39 · 2116 阅读 · 0 评论 -
OpenFire源码学习之一:XMPP基础知识
前面两张主要讲基础部分。XMPP与Mina有部分抄写于互联网的其他大事XMPP概述XMPP: The Extensible Messaging and Presence Protocol中文全称:可扩展通讯和表示协议Xmpp是一种类似于http的通讯传输协议,它是一个“包装”/“解包”的过程。XMPP适合新项目的优势:l 无需投入成原创 2018-02-01 10:19:02 · 891 阅读 · 0 评论 -
OpenFire源码学习之二:Mina基础知识
Mina概述Apache MINA(Multipurpose Infrastructure for NetworkApplications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP应用程序开发、串口通讯程序(只在最新的预览版中提供),MINA所支持的功能也原创 2018-02-01 10:20:18 · 627 阅读 · 0 评论 -
OpenFire源码学习之三:在Eclipse中构建源码
源码搭建下载地址:地址:http://www.igniterealtime.org/downloads/source.jsp环境准备第1步: 在官网上在下最新源码,这里是3.8.1。解压后得到如下图所示:第2 步: 在IDE工具上新建一个java普通工程命名openfire第3步: 将解压后的openfire_src原创 2018-02-01 10:22:18 · 409 阅读 · 0 评论 -
OpenFire源码学习之四:openfire的启动流程
openfire启动ServerStarter启动流程图:启动的总入口在ServerStarter的main方法中。通过上图首先它会先加载它所需要的jar文件。最后通过java反射机制将XMPPServer加入当前线程。[java] view plain copyThread.currentThre原创 2018-02-01 10:23:39 · 711 阅读 · 0 评论 -
OpenFire源码学习之五:用户登录
登陆登陆认证,客户端发送认SASL证消息:[html] view plain copyauth mechanism="DIGEST-MD5" xmlns="urn:ietf:params:xml:ns:xmpp-sasl">auth> 服务器得到客户端给出的SASL认证机制回答。首先将它存储起来。C给出的原创 2018-02-03 16:21:28 · 628 阅读 · 1 评论 -
OpenFire源码学习之六:用户注册
用户注册注册流程:1、客户端进行握手给服务端发送连接消息:[html] view plain copystream:stream to="192.168.2.104" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1原创 2018-02-03 16:22:17 · 547 阅读 · 0 评论 -
OpenFire源码学习之七:组与花名册
Group在openfire中的gorop——组,也可以理解为共享组。什么叫共享组呢。当有一个组名字为“学习组”,当其他用户加入这个组的时候,那么他们会自动成为相互的好友。实际上在openfire内,用户的好友不仅仅只是花名册,还包括共同在一个组的成员。当然这个组有很多好处。比如,那我们公司做的一个项目为例。我们做学校老师与家里沟通的的APP,需要预先将老师和家长做成好友,这个就不原创 2018-02-03 16:23:04 · 398 阅读 · 0 评论 -
OpenFire源码学习之八:MUC用户聊天室
MUC房间属性设置以上属性存储在MUCPersistenceManagerprivate staticConcurrentHashMap propertyMaps =newConcurrentHashMap();创建房间客户端创建房间案例第一:客户端发出查询请求[html] view plain cop原创 2018-02-03 16:24:01 · 696 阅读 · 0 评论 -
OpenFire源码学习之九:OF的缓存机制
关于缓存,openfire存储到了本地JVM中。本人认为这样并不是很好。以后会讲一篇Redis的缓存。实际应用中,本人讲openfire诸多缓存内容放置了redis中。这里就看看openfire自己的缓存吧。Cache接口类图:Cache接口继承了Map工具类,它存储相关的对象在内存中独特的键、值队,可快速访问。所有的键和值添加到缓存必须原创 2018-02-03 16:24:41 · 351 阅读 · 0 评论 -
OpenFire源码学习之十:连接管理(上)
关于连接管理分为上下两部分连接管理在大并发环境下,连接资源 需要随着用户并发访问量的增加而增加,所以可伸缩的连接资源就是支持大访问量的关键技术。openfire系统通过增加独立部署的连接管理器程序提高并发的能力,连接管理的前端是一台负载均衡设备,它负责把用户访问分配到指定连接管理器,多台连接管理器在访问服务器。使用连接管理器后,服务器的连接池是提供给连接管理原创 2018-02-03 16:25:29 · 403 阅读 · 0 评论 -
OpenFire源码学习之十一:连接管理(下)
下面是下部分C2S1、当有客户端进行连接时根据Mina框架的模式首先调用的是sessionOpened方法。sessionOpened首先为此新连接构造了一个parser(XMLLightWeightParser),这个parser 是专门给XMPPDecoder(是XMPPCodecFactory的解码器类)使用的,再创建一个 Openfire的Conn原创 2018-02-03 16:26:14 · 382 阅读 · 0 评论 -
OpenFire源码学习之十二:HttpBind&Script Syntax
HttpSessionManager该类管理所有通过httpbing连接到openfire的议定。它是一个同步http的双向流http://www.xmpp.org/extensions/xep-0124.html构造方法:HttpSessionManager()配置一个汇集执行者对异步路由传进来的数据的默认大小配置默认为60秒注意:在默认情况下,服务支持最原创 2018-02-03 16:27:29 · 342 阅读 · 0 评论 -
OpenFire源码学习之十三:消息处理
消息处理流程总揽(该图来源于互联网,图片很大,不过类容还是挺清楚的。不方便查看,需要下载查看):更为直观的流程描述:在线chat Test1---->test2[html] view plain copymessage id="1coTi-29" to原创 2018-02-03 16:30:08 · 892 阅读 · 0 评论 -
OpenFire源码学习之十四:插件管理
Plugin管理Openfire把插件模块加入到容器分为以下步骤:l 通过classloader加载lib目录下载的所有jarl 通过classloader加载dir目录下的所有文件l 定位和加载module.xml到contextl 遍历jive模块实体,负荷给定的类作为一个模块,然后启动它Openfire插件加载流程图:原创 2018-02-05 10:44:58 · 297 阅读 · 0 评论 -
OpenFire源码学习之三十三:windows打包
需要软件 1.install4j_windows_4_0_8.exe 2.windows-x86-1.6.0_18.tar.gz安装 安装install4j_windows_4_0_8.exe到默认路径下一步:安装完后查看自己的安装目录:将文件windows-x86-1.6.0_18.tar.gz复原创 2018-02-07 07:57:19 · 454 阅读 · 0 评论