你的位置:首页 > 软件开发 > Java > Openfire阶段实践总结

Openfire阶段实践总结

发布时间:2016-06-02 14:00:18
从3月开始研究Openfire,其实就是要做一套IM系统,也正是这个原因才了解到Openfire。之前还真没想过有这么多的开源产品可以做IM,而且也没想到XMPP这个协议竟然如何强大。看来还是标准为先,好的标准可以推动产业发展啊。 Openfire的搭建与简单的demo之前写 ...

从3月开始研究Openfire,其实就是要做一套IM系统,也正是这个原因才了解到Openfire。之前还真没想过有这么多的开源产品可以做IM,而且也没想到XMPP这个协议竟然如何强大。看来还是标准为先,好的标准可以推动产业发展啊。

 

Openfire的搭建与简单的demo之前写过篇《技术笔记:XMPP之openfire+spark+smack》,当时主要关注的怎么让这套体系跑起来吧,只不过现在还是在这个阶段,只是多学了点东西留下点笔记吧。

 

1、对于XMPP的学习很重要

最开始觉得搭建一套Openfire+spark太简单啦,而且将spark的界面修改一下就可以变成一个新的产品,所以当时觉得XMPP协议这么高深的东西不用太深入。只不过随着简单的事情结束了才发现,最核心的还是协议本身,了解协议可以更了解系统的运作,才能体会到这套系统是有多复杂。当然是对于我来说有点复杂,特别是涉及到前后端结合设计与开始时。

为此我推荐一个国内的XMPP协议翻译网站:http://wiki.jabbercn.org/%E9%A6%96%E9%A1%B5。

当然如果英文好那就原版吧:http://xmpp.org/about/technology-overview.html

经过一段时间学习后,感觉QQ和微信在基础原理上真的和XMPP很类似,只是使用的协议格式有些差别,或许这就是即时通讯的抽象层次吧。但是使用

2、Openfire的一些设计点与思路

Openfire的源代码整体看了看还是比较清晰的,扩展上支持插件与组件模式。在最近扩展的中发现openfire的源代码本身不太好去修改,依赖性很强,唯独模块间的依赖比较松散些,模块内的类依赖基本是紧耦合的。只不过Openfire可以通过插件扩展,对源代码本身的依赖就小了许多,所以说整体来说还是很不错的。

在Openfire中的插件扩展方式主要是:

  • IQHandler

在XMPP协议中IQ包是指的信息/查询,可以用于服务器与客户端之间进行数据查询,Openfir中实现了一个IQRouter来处理IQ包。自然IQHandler就是具体的IQ包处理单元啦。IQHandler是基于namespace来进行拦截处理的,自定义自己的命名空间后即可。

IQHandler提供了两个抽象方法,用于派生类实现:

  /**   * Handles the received IQ packet.   *   * @param packet the IQ packet to handle.   * @return the response to send back.   * @throws UnauthorizedException if the user that sent the packet is not   *   authorized to request the given operation.   */  public abstract IQ handleIQ(IQ packet) throws UnauthorizedException;  /**   * Returns the handler information to help generically handle IQ packets.   * IQHandlers that aren't local server iq handlers (e.g. chatbots, transports, etc)   * return <tt>null</tt>.   *   * @return The IQHandlerInfo for this handler   */  public abstract IQHandlerInfo getInfo();

原标题:Openfire阶段实践总结

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录