著录项信息
专利名称 | 一种基于XMPP协议的即时消息传输方法 |
申请号 | CN201210087194.4 | 申请日期 | 2012-03-29 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2012-07-18 | 公开/公告号 | CN102594845A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/06 | IPC分类号 | H;0;4;L;2;9;/;0;6;;;H;0;4;L;2;9;/;0;8;;;H;0;4;L;1;2;/;5;8查看分类表>
|
申请人 | 东南大学 | 申请人地址 | 江苏省苏州市独墅湖高教区林泉街399号东南大学苏州研究院
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 东南大学 | 当前权利人 | 东南大学 |
发明人 | 裴文江;王晓姝;张书强;王开;孙庆庆;张毅峰;杨洋;詹金狮;第伟;朱光辉;缪瑞华;沈彦真 |
代理机构 | 南京经纬专利商标代理有限公司 | 代理人 | 许方 |
摘要
本发明公开了一种基于XMPP协议的即时消息传输方法,使用开源的Openfire作为服务器,以Spark客户端作为主要客户端框架,采用Java语言在Smack客户端库编写一个基于XMPP协议的客户端,以Xampp软件中的MySQL作为数据库,采用XMPP技术、SOCKS技术、数据库技术和套接字技术,成功实现企业内部以及企业外部的即时消息之间的数据传输。本发明不仅能很好的满足用户的基本需求、管理需求与功能性需求外,还能达到较高的安全性,可扩展性,实现与其他即时通信系统的互联互通。
1.一种基于XMPP协议的即时消息传输方法,其特征在于:使用开源的Openfire作为服务器,以Spark客户端作为主要框架,以MySQL作为数据库,采用XMPP技术、SOCKS技术、数据库技术,套接字技术和网关技术,在Smack客户端库建立一个基于XMPP协议的客户端,实现企业内部以及企业外部的即时消息之间的数据传输;其中:
所述基于XMPP协议的客户端进行数据传输的过程如下:
A、实现用户注册功能:
步骤A1:采用用户注册模块初始化注册界面;用户在注册界面中输入用户名、密码、确认密码和服务器的IP,将上述用户名、密码、确认密码和服务器的IP信息发送至用户注册模块;
步骤A2:用户注册模块验证用户输入信息是否有效;当用户输入的数据无误,则继续下一步骤;
步骤A3:读取服务器主机名和端口号;客户端通过协议解析模块将用户注册信息转换为XMPP请求数据;
步骤A4:客户端通过底层通信模块与服务器建立连接,向服务器发送用户注册请求;
步骤A5:通过底层通信模块监听来自服务器的响应,客户端启动监听时延;
步骤A6:判断在时延内客户端是否收到来自服务器的响应,若收到响应,进一步判定该响应是否有误;若没有错误,则协议解析模块处理响应,并在客户端界面显示用户注册成功,结束用户注册操作;若响应有误,则客户端界面显示用户注册失败,结束用户注册操作;
B、实现用户登录功能:
步骤B1:启动客户端登陆界面后,采用用户登录模块进行初始化工作;
步骤B2:用户在客户端的用户登录界面输入用户名、密码和服务器的IP,将上述用户名、密码和服务器的IP信息发送至用户登录模块;
步骤B3:用户登录模块获取输入信息,然后读取服务器的主机名和密码;
步骤B4:通过客户端后台的协议解析模块将登录信息解析为XMPP数据请求包;
步骤B5:通过底层通信模块与服务器建立连接,向服务器发送用户登录请求;
步骤B6:客户端创建新的监听,并设立时延;
步骤B7:判断在时延内客户端是否收到来自服务器的响应,若收到,进一步判断该响应是否有误,若没有错误,则协议解析模块处理响应,并在客户端界面显示用户登录成功,结束用户登录操作;若响应有误,则客户端界面显示用户登录失败,结束用户登录操作;
C、实现状态订阅功能:
步骤C1:客户端与服务器建立连接;
步骤C2:客户端向服务器申请获取好友名册中好友名单;
步骤C3:服务器判断好友名单中的第一个好友是否在线,若在线,则产生该好友上线的通知XML流发送给登录用户并告知该好友用户登录的状态,若不在线,继续判断第二个好友是否在线,依次类推,直至查询完好友名单中的所有好友;
D、实现好友名册管理功能:
步骤D1:客户端与服务器建立连接;
步骤D2:客户端向服务器提出查询好友列表请求;
步骤D3:服务器响应请求并以登录用户的JID为参数在好友列表查找其好友的JID,然后再根据查询数据库得到的好友信息结果中的好友JID,查询他们的在线状态,然后将这些信息组合成XMPP协议的XML流返回给登录用户;
步骤D4:客户端显示好友列表;
E、实现添加好友功能:
步骤E1:客户端前端向服务器发出添加好友的请求;
步骤E2:客户端的协议解析模块解析出要添加的好友的JID;
步骤E3:客户端在本地搜索要添加的好友是否存在,若存在,则返回前端提示该用户已是好友,无需添加,结束操作;若不存在,则通过底层通信模块向服务器请求,通过服务器的数据访问模块以JID为条件在数据库中的用户表中查找该好友;
步骤E4:若数据库中的用户表中存在该好友,则服务器端将结果返回给客户端,并将所述JID插入到好友列表中,通过底层通信模块,返回包含有该好友的信息的XML流,提示添加好友成功,结束操作;
步骤E5:若数据库中的用户表中不存在该好友,则向客户端返回添加失败的XML流,提示不存在此用户;
F、实现删除好友功能:
步骤F1:客户端前端向服务器发出删除好友的请求;
步骤F2:服务器在收到客户端发来的请求之后,通过协议解析模块解析XML流,并获取需要删除的好友的JID;
步骤F3:服务器通过数据库访问模块在数据库的好友列表中查询该用户,并将其删除;
步骤F4:若删除成功,则向客户端返回相应的XML流,提示客户端好友删除成功,结束操作;
步骤F5:若删除失败,则向客户端返回相应的XML流,提示客户端删除失败;
G、实现客户端与服务器之间的会话功能:
步骤G1:源客户端通过底层通信功能模块向第一XMPP服务器发送建立会话的请求;
步骤G2:第一XMPP服务器在收到源客户端的请求之后通过TLS,SASL进行安全、身份验证,若通过,则向源客户端返回确认建立连接的响应;
步骤G3:源客户端通过协议解析功能模块获取客户端界面的消息并将其封装成XMPP数据包,然后通过底层通信功能模块向XMPP服务器发送会话内容;
步骤G4:第一XMPP服务器通过协议解析模块进行XMPP数据包解析,获取数据包中目的客户端的JID,通过数据库访问模块查询数据库;
步骤G5:若目的客户端在本地服务器中,并且目的客户端在线,则直接将数据包转发给目的客户端,结束会话并关闭连接;若目的客户端不在线,则将XMPP数据包通过数据库访问模块将XMPP数据包存入第一XMPP服务器的数据库,待目的客户端上线后进行数据转发;
步骤G6:若目的客户端不在本地服务器中,则服务器向DNS服务器发送申请解析域名的请求;
步骤G7:采用DNS服务器搜索目的客户端所在的第二XMPP服务器,同时向第一XMPP服务器返回解析后的域名;
步骤G8:第一XMPP服务器通过TCP三次握手、TLS、SASL以及服务器回拨功能进行安全、身份验证,向第二XMPP服务器发送连接请求;
步骤G9:第二XMPP服务器通过底层通信模块向第一XMPP服务器发送请求响应,若目的客户端在线状态,则建立二者之间的连接,转向步骤G10;若目的客户端不在线,则将XMPP数据包存入第一XMPP服务器的数据库中,待目的客户端上线后再将该信息转发;
步骤G10:第一XMPP服务器向第二XMPP服务器转发由源客户端发送的XMPP数据包;
步骤G11:第二XMPP服务器直接将XMPP数据包转发到目的客户端,结束会话并关闭连接;
步骤G12:源客户端通过协议解析模块获取XMPP数据包之后,通过协议网关,将数据包发送到非XMPP系统的服务器,再由非XMPP系统的服务器将数据包转发到非XMPP系统的客户端;
H、实现文件传输功能:
步骤H1:源客户端向XMPP服务器发送向目的客户端传输文件的请求;
步骤H2:XMPP服务器通过数据访问模块访问数据库判断目的客户端是否属于本地服务器,若目的客户端不属于本地服务器,则将请求转向代理服务器,转向步骤H5;
若目的客户端属于本地服务器,则判断目的客户端是否在线:若在线,则向目的客户端发送源客户端文件传输的请求,并向源客户端返回目的客户端的JID,转向步骤H3;若不在线,则将传输文件请求存放在服务器的缓冲区,等目的客户端在线时,直接从缓冲区提取文件并转发给目的客户端,转向步骤H12;
步骤H3:目的客户端响应XMPP服务器传输文件的请求,XMPP服务器将响应发送给源客户端;
步骤H4:源客户端向XMPP服务器传输文件,XMPP服务器直接将文件转发给目的客户端,转向步骤H12;
步骤H5:目的客户端为代理服务器打开一个TCP socket连接;
步骤H6:代理服务器通过SOCKS 5与目的客户端建立连接,设定目标地址和目标端口参数的值;
步骤H7:代理服务器通过SOCKS 5发送连接成功并确认至源的客户端;
步骤H8:源客户端为代理服务器打开一个TCPsocket连接;
步骤H9:源客户端通过SOCKS 5向代理服务器请求建立连接,设定目标地址和目标端口参数的值;
步骤H10:若成功建立连接,源客户端通过SOCKS 5发送连接成功确认至目的客户端端;
步骤H11:源客户端和目的客户端通过SOCKS 5代理服务器,再由SOCKS 5服务器转发给XMPP服务器可以成功实现文件的传输;
步骤H12:文件成功传输之后,关闭源客户端和目的客户端之间的连接;
I、实现IM互相通信功能:XMPP系统的客户端发送消息给非XMPP系统的客户端,首先指明一个包含非XMPP系统名的JID;
其次,XMPP服务器将数据发送到指定的传输器应用程序,如果传输器是本地的,则XMPP服务器直接与其进行通信;如果传输器不在本地运行,本地服务器发送一个包给远程服务器,该远程服务器将会把包发送给指定的传输器;
一旦传输器接收到XML包,即把信息转变成另一个IM网络中可以识别的本地包,并把这个本地包传送到那个IM网络中。
法律信息
- 2018-04-17
未缴年费专利权终止
IPC(主分类): H04L 29/06
专利号: ZL 201210087194.4
申请日: 2012.03.29
授权公告日: 2014.12.10
- 2014-12-10
- 2012-09-19
实质审查的生效
IPC(主分类): H04L 29/06
专利申请号: 201210087194.4
申请日: 2012.03.29
- 2012-07-18
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2009-05-13
|
2007-11-08
| | |
2
| |
2009-08-05
|
2009-03-16
| | |
3
| |
2009-07-22
|
2009-02-27
| | |
4
| |
2007-11-07
|
2007-05-31
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |