基于RESTful的即时通信业务开放接口的设计与实现
摘要:本文将分析使用RESTful架构实现服务器端即时通信开放接口的优势,并介绍如何使用RESTful构架设计及实现即时通信的开放接口。本文介绍的即时通信开放接口所具有的主要功能有:1-1聊天,组聊天,通知订阅。本文所涉及到的技术包括:服务器端即时通信开放接口的业务逻辑的设计,数据库表的设计,JAX-RS包的使用。
关键字: RESTful架构风格,即时通信,开放接口
一、基于RESTful的开放接口系统结构
即时通信是基于移动互联网的一项开放业务。其开放接口的三种构架有CORBA(通用物件请求代理架构)、 SOAP(简单对象访问协议)、 REST(表述性状态转移)。
RESTful风格充分利用了HTTP定义的四种常用操作:GET,POST,DELETE,PUT,并且可以为即时通信中的各种资源(包括实体和服务)定义唯一的URI,使得对这些资源的操作十分的方
便。与其他两种架构/协议相比,RESTful风格的开发复杂度更低,更易于扩展系统功能。综上所述,使用RESTful的体系结构来开发即时通信服务器端的开放接口更为合适。即时通信业务的系统流程图如图1所示,整个业务使用了B/S模型。若客户端希望使用即时通信的功能,首先需要向通信服务器发出请求。通信服务器收到并分析客户端请求,将客户端发来的消息表示成XML格式(消息体可以为空),将这些信息封装到HTTP包中,根据客户端请求编写相应的URL作为HTTP包的目的地址,最后将此HTTP包发送到聊天服务器。不同的URL对应了聊天服务器不同的接口(服务),聊天服务器做出相应处理,期间可能需要查询或修改数据库。接口主要功能有聊天信息的发送、组聊天、通知订阅。
图1系统流程图
二、基于RESTful的IM开放接口的设计
(一)资源设计
1、资源概述:如图2描述了整个即时通信业务所用到的主要资源(服务也是一种资源)。由根节点/chat/{userId}到由蓝矩形表示的资源有唯一的一条路径,该路径上的各字符串可组成一串URL地址,即该资源对应的URL地址。
图2 资源图
2、聊天接口的资源描述见表1
表1聊天接口资源描述
3、组聊天接口的资源描述见表2
表2 组聊天接口资源描述
4、通知订阅接口的资源描述见表3
当前即时通信业务有两个通知,NOTE_1及NOTE_2,这两个通知均与组聊天有关。
NOTE_1的功能是,当的某一参与者正式加入该或退出该时,向该中其他参与者发送通知,告知该用户状态的改变。
NOTE_2的功能是,当某一用户上线或离线时,向其所在的参与者发送通知,告知该用户状态的改变。
表3 订阅接口资源描述
(二)业务流程设计
1、1-1聊天发送消息的流程
通信服务器流程:
向localhost:8080/demo/services/chat/{userId}/oneToOne/{otherUserId}/messages
调用POST方法,发送的信息为APPLICATION/XML格式,内容为
信息内容
聊天服务器端流程:
图31-1聊天发送消息功能中聊天服务器端流程图
2、组聊天
1)创建
通信服务器端:
向localhost:8080/demo/services/chat/{userId}/group调用POST方法。
restful接口调用实例其中,userId是登录当前客户端的用户账号,也是新建的的创建者。
发送的信息格式为APPLICATION/XML。
聊天服务器端:
图4创建功能中聊天服务器端的流程图
2) 的创建者添加成员
通信服务器端:
向localhost:8080/demo/services/chat/{userId}/group/{groupId}/participants
调用POST方法。
其中userId是groupId的创建者,其他人无权执行此操作。
发送的信息的格式为APPLICATION/XML,内容类似于
participant1
userId1
false
participant2
userId2
false
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论