openfire简介
- 格式:pptx
- 大小:564.24 KB
- 文档页数:17


openfire源码分析
启动流程
Socket接⼝
Socket通信使⽤Mina框架实现,是XMPP协议的处理⼊⼝,具体为:
消息接收后由不同的节处理器处理:
StanzaHandler基础消息类型,之后进⾏消息路由:
最后通过路由表进⾏路由:
Http接⼝
Http接⼝⽤于Web端的管理以及Web客户端的通信,使⽤jetty实现。
通过XMPServer启动ConectionManager来管理链接启动,包括SSL,HTTP,TCP等。
消息处理流程
消息发送
消息的发送通过NIOConnection.deliver(Packet packet)实现。
模块功能列表
启动模块
RoutingTableImpl
/**
* Routing table that stores routes to client sessions, outgoing server sessions
* and components. As soon as a user authenticates with the server its client session
* will be added to the routing table. Whenever the client session becomes available
* or unavailable the routing table will be updated too.
*
* When running inside of a cluster the routing table will also keep references to routes
* hosted in other cluster nodes. A {@link RemotePacketRouter} will be use to route packets
* to routes hosted in other cluster nodes.
Openfire服务器部署以及自定义用户表格说明
安装
下载openfire服务器,官网地址:官网地址/projects/openfire/。目前openfire服务器版本已经升级到3.8.1版本了,跟根据不同操作系统选择不同的下载版本。如下图:
下载完成双击可运行的openfire_3_8_1.exe即可运行安装,如下图:
一路点击“下一步”,即可完成安装这样就可以运行了。如下图:
至此,我们的openfire服务就安装部署完成了,但是它还不可以直接使用,必须经过相关参数的配置。
参数配置
接上图点击“完成”,服务器开始运行,如下图:
此时,我们打开浏览器在地址栏中输入url:http://127.0.0.1:9090/setup/index.jsp,即出现openfire配置页面首页。如下图:
首先是语言设置,更具需要选择自己熟悉的语言,再次我就选择“中文”,点击“继续”进行下一步配置。如下图:
这是服务器的访问设置,“域”就是域名的意思,设置你以后访问openfire服务器是的域名(注意:这个域名的配置和DNS服务有关系,若没有DNS服务器,通过此域名是不可以访问openfire服务器的。),它默认是你的计算机名。它默认的后台管理端口是9090,也可以自行修改,但是不可与其他程序所用端口冲突,点击“继续”,进行下一步配置。如下图:
这里是数据库配置,可根据具体需要选择不同选项,在此我们选择第一项“标准数据库连接”,看它的解释就可以明白,它使用外部数据库并且使用openfire自己的机制来管理数据库。点击“继续”进行下一步配置。如图:
这是数据库连接设置,“数据库驱动选项”是用来选则你需要连接的数据库类型的,openfire已经集成目前主要流行的数据库类型,在此我已orcle为例。如下图:
注意:“jdbc驱动类”和“数据库URL”不能写错,由于openfire服务器是纯java编写,目前数据库驱动只支持java的JDBC连接,所以首先要把java的jdbc驱动jar包放在openfire安装目录的lib文件夹下,并重启服务器让其生效。否则就会报错,如下图:
1 1 配置demo
1、登录到openfire后台管理系统,点开服务器管理器中的系统属性,如下图:
2、在这里可以进行openfire系统属性的配置与修改,而这个页面配置的内容保存在openfire数据库中ofproperty表中,可以打开看一下
里面的配置后续会解释,是一些openfire的系统设置。
3、现在的需要的是使用userID登陆
在openfire源码中找到org.jivesoftware.openfire.auth.JDBCAuthProvider,在文件中一开始,我们可以看到: 2
大概意思就是把provider.auth.className修改为 org.jivesoftware.openfire.auth.JDBCAuthProvider之后登陆验证就走JDBCAuthProvider的代码,下面还有一些需要配置的参数,规则都有了,进行配置吧。
3、根据自己的需要,配置如下:
配置完了后,重启openfire,可以登陆(数据库密码是明文的,不是加密过的,加密过得密码验证以后说),但是openfire后台管理系统登陆不进去
解决办法:查看ofproperty表中name字段为admin.authorizedJIDs的peopValue字段值,格式应为username@‘域名’,其中username应为表中存 3 在的数据,域名为name字段为xmpp.domain的peopValue字段值,ok现在通过spark与后台管理都可以登陆成功了
2 脚本例子
以下是聊天服务器配置脚本,在数据库openfire实例下运行此脚本即可完成自定义用户表配置。
-- 更改登录验证方式,用JDBC配置的用户表验证,如果无法insert就update原来的provider.auth.className
insert into OFPROPERTY (NAME, PROPVALUE) values
软件设计开发本栏目责任编辑:谢媛媛ComputerKnowledgeandTechnology电脑知识与技术第16卷第36期(2020年12月)
自建IM服务器的猿学习App的设计与实现
梁振伟
(广东外语外贸大学南国商学院信息科学技术学院,广东广州510545)
摘要:IM服务器就是一台独立运行的程序,接收用户发送给服务器的信息,并将其转发至其他用户,而目前国内的IM服务
器一般都是由其他大厂进行派发,程序需要进行二次开发,用户相关信息放置在一个配置文件里,安全性相对较低。该文
通过对编程教育类App进行分析,分别从学生、老师的角度出发,寻找合理有效的解决方案。并通过自建IM服务器的方
法,以此实现即时通信。
关键词:即时通信;移动学习;编程教育
中图分类号:TP311文献标识码:A
文章编号:1009-3044(2020)36-0075-02开放科学(资源服务)标识码(OSID):
TheDesignandImplementationofSimianLearningAppofSelf-builtIMServer
LIANGZhen-wei
(InstituteofInformationScienceandTechnology,SouthChinaBusinessCollegeGuangdongUniversityofForeignStudies,Guang⁃
zhou510545,China)
Abstract:IMserverisanindependentrunningprogramthatreceivesinformationsentbyuserstotheserverandforwardsittoother
users.Atpresent,domesticIMserversaregenerallydistributedbyotherlargefactories.Theprogramneedssecondarydevelop⁃