IOS离线推送
场景:
如果您有IOS端的APP,在会话聊天的时候,用户登陆了但可能会退出了界面。这时候其他终端给目标端发送消息时候,消息可以发送到IOS的推送服务器。用过QQ的都知道,你会有哦一条消息在您的主屏上展示。这个就是利用了IOS的推送服务器呢。那么openfire只需要判断用户不在线的时候将消息推送给IOS端。
苹果服务器的消息推送都需要手机的唯一标志,也就是唯一的终端设备号。那...
分类:
移动开发 时间:
2015-02-04 09:35:07
阅读次数:
358
插件实现
首先来看下插件目录:
RedisServicePlugin
源码清单:
import java.io.File;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Collection;
import java.util.HashMap;
import jav...
分类:
其他好文 时间:
2015-02-04 09:33:43
阅读次数:
406
Redis插件
介绍
Redis是目前比较流行的NO-SQL,基于K,V的数据库系统。关于它的相关操作信息,本人这里就不做重复了,相关资料可以看这个网站http://www.redis.io/(官网)、http://www.redis.cn/(中文站)。
这里本人想说的是,拿Redis做openfire的缓存数据库。能够大大的提高openfire连接的吞吐量。Openfire自身在本地使用M...
分类:
其他好文 时间:
2015-02-04 09:32:14
阅读次数:
390
用户名片
在预初始化中,贴出来用户名片的程序。这里也一样不在重复。
首先同样先修改系统属性:
provider.vcard.className
org.jivesoftware.util.redis.expand.RedisVCardProvider
然后需要修改VCardManager名片管理这个类。
RedisVCardProvider:...
分类:
其他好文 时间:
2015-02-04 09:31:32
阅读次数:
261
用户类
优化用户主要是要解决用户的连接量。已经对用户的访问速度和吞吐量。
预初始化
在前面的带面中提出来了用户的预初始化。这里就不在贴出来了。下面将redis用户库连接池处理贴出来UserJedisPoolManager
public class UserJedisPoolManager extends BasicModule{
private static final Logger...
分类:
其他好文 时间:
2015-02-04 09:31:27
阅读次数:
285
消息处理
之前有说过,openfire的消息处理策略本人并不是很喜欢。先看下openfire上脱机消息策略。
个人认为消息关于会话的消息,用户的存储量应该无限大。服务器不应该被消息吃撑了。所谓聊天通讯,这一关很重要。
Openfire的消息是什么流程呢。
1、当用户登陆连接的时候。握手、认证、绑定资源、获取花名册、获取离线消息。
2、服务端会查找关系型数据库。经本人测试离线消...
分类:
其他好文 时间:
2015-02-04 09:31:10
阅读次数:
413
这一篇紧接着上面继续了。
方案二
基于redis的消息回执。主要流程分为下面几个步骤:
1)将消息暂存储与redis中,设置好消息的过期时间
2)客户端回执消息id来消灭暂存的消息
3)开通单独线程论坛在第1)步中的消息。根据消息的时间重新发送消息。如果消息第一次存放的时间大雨有效期(自定义10秒),解析消息中的to查找用户是否还在线。如果在则T掉(因为它长时间不理会服务的重要命...
分类:
其他好文 时间:
2015-02-04 09:30:53
阅读次数:
599
HTTP Service插件
这里的http接口插件是神马?
Openfire主要是在消息推送,那么与其他系统的的消息怎么结合呢,那么这里这个HTTP Service插件就提供了一个基于HTTP的接口。为什么要提供这样的接口?在有些互联网的场景。一个用户平台可以是web的,当然也会有移动终端的APP,那么web端要给移动终端的APP发送消息就依赖这样的接口了。当然这里只是一种实现方式。
首先...
分类:
Web程序 时间:
2015-02-03 23:05:57
阅读次数:
533
HttpSessionManager
该类管理所有通过httpbing连接到openfire的议定。它是一个同步http的双向流
http://www.xmpp.org/extensions/xep-0124.html
构造方法:HttpSessionManager()
配置一个汇集执行者对异步路由传进来的数据的默认大小配置默认为60秒
注意:在默认情况下,服务支持最大254个客户端。这...
分类:
Web程序 时间:
2015-02-03 09:37:09
阅读次数:
238
Plugin管理
Openfire把插件模块加入到容器分为以下步骤:
l 通过classloader加载lib目录下载的所有jar
l 通过classloader加载dir目录下的所有文件
l 定位和加载module.xml到context
l 遍历jive模块实体,负荷给定的类作为一个模块,然后启动它
Openfire插件加载流程图:
Openfire的插件管理类Plu...
分类:
其他好文 时间:
2015-02-03 09:36:46
阅读次数:
209