互动部分协议
流程描述
建立群:
1.客户端去发请求->服务器(我们的协议810)
2.服务器端用管理员xmpp账号建群,并在服务器端记录此账号为群主
3、服务器用管理员xmpp账号发xmpp消息回来,告知群建立成功。
退出群:
1.客户端发请求->服务器(我们的协议812)
2.服务器端从数据库删掉该用户在群里的关系
3.客户端本地发送消息给xmpp服务器,并从本地删除数据。(即使没有删除成功,下次登录群列表也没有该群了)
邀请用户进入:
1.群管理人员使用客户端发请求->服务器(我们的协议)
2.服务器端用管理员xmpp账号发xmpp消息给被邀请用户的客户端(自定消息100)。
客户端若同意:
1.发请求->服务器(我们的协议811)
2.服务器返回jid和pwd,客户端用返回的数据进入xmpp群
客户端若不同意:
可不理
用户申请进入:
1.若服务器上数据表明群为需要申请的,则发申请到服务器
2.服务器端用管理员xmpp账号发xmpp消息给群的管理人员。(自定消息101)
管理人员若同意:
1.服务器用管理员账号发xmpp消息告知申请者群信息(自定消息格式201)
2.申请者客户端用id和key请求入群jid和xmpp(我们的协议811)
管理人员若不同意:
1.服务器用管理员xmpp账号发xmpp消息告知申请者拒绝信息(自定消息格式202)
自定消息格式
协议号:
//可交互的
告知用户被邀请:100 告知用户群管理员用户申请消息:101
//不需要用户交互的
告知用户群创建成功:200 告知用户已通过申请加入群:201 告知用户加群申请已被拒绝:202 告知用户已被踢:203 告知用户已被设置为管理员:204 告知管理员某用户已退出群:205
//可交互的:
告知用户被邀请 100
<custom_content no="协议号">
<Invite from="用户名">
<Room id="房间id" name="群名" key="识别码,申请入群密码的时候使用"/>
<Reason>
//邀请消息内容
</Reason>
</Invite>
</custom_content>
告知用户群管理员用户申请消息 101
<custom_content no="协议号">
<Apply from="用户名" fromid="用户id" >
<Room id="房间id" name="群名"/>
<Reason>
//申请消息内容
</Reason>
</Apply>
</custom_content>
//不需要用户交互的:
告知用户群创建成功 200
//这个时候要把密码发过来
<custom_content no="协议号">
<Notify >
<Room jid="房间jid" name="群名" pwd="密码" nickname="房间昵称"/>
</Notify>
</custom_content>
告知申请人通过申请加入群 201
<custom_content no="协议号">
<Notify >
<Room id="房间id" name="群名" key="识别码,申请进群密码的时候使用" />
<Content>
//消息内容
</Content>
</Notify>
</custom_content>
告知申请人未通过申请,拒绝加群 202
<custom_content no="协议号">
<Notify >
<Room id="房间id" name="群名" />
<Content>
//消息内容
</Content>
</Notify>
</custom_content>
告知群用户已被踢出房间 203
<custom_content no="协议号">
<Notify >
<Room id="房间id" name="群名"/>
<Content>
//消息内容
</Content>
</Notify>
</custom_content>
告知用户已被设置为管理员:204
<custom_content no="协议号">
<Notify >
<Room id="房间id" name="群名"/>
<Content>
//消息内容
</Content>
</Notify>
</custom_content>
告知管理员某用户已退出群:205
<body>
<Notify from="退群用户名" fromid="退群用户id">
<Room jid="房间jid" name="群名"/>
<Content>
//消息内容
</Content>
</Notify>
</body>
走我们协议的部分
含义 | 宏定义 | 值 |
---|---|---|
根据用户id获取用户信息 | SERVICE_GETDETAILBYUSERID | 401 |
获取自己加入群的列表 | SERVICE_GETJOINEDROOMS | 800 |
获得群的详细信息 | SERVICE_GETROOMINFO | 801 |
获取群的所有用户列表 | SERVICE_GETROOMOCCUPANTS | 802 |
建立群 | SERVICE_CREATEROOM | 810 |
加入群 | SERVICE_JOINROOM | 811 |
退出群 | SERVICE_EXITROOM | 812 |
获取自己加入群的列表
请求:
http://..../service.aspx?no=800&sid=”456578935498756”
响应:
<service no=”800” errno=”0”>
<item id="群id" jid=“test@conference.com” name="第三期培训班聊天群" icon="群图标地址" pwd="进群密码" nickname="昵称">;
....
</service>
参数:
标识符 | 取值范围 | 说明 |
---|---|---|
no | 800 | SERVICE号,见前述“SERVICE定义” |
jid | 字符串 | 房间jid,用来加入 |
name | 字符串 | 群名字 |
pwd | 字符串 | 进入群的密码 |
nickname | 字符串 | xmpp进入群的昵称 |
获得群的详细信息
请求:
http://..../service.aspx?no=820&id=“群id”
响应:
<service no=”800” errno=”0”>
<item id="群id" name="第三期培训班聊天群" icon="群图标地址" usercount="用户数" desc=“群简介” flag=“”>;
....
</service>
参数:
标识符 | 取值范围 | 说明 |
---|---|---|
... | ||
flag | 整形 | 0为不能进入 1为不需要验证 2为需要验证 |
desc | 字符串 | 群简介 |
获得群的所有用户列表
请求:
http://..../service.aspx?no=820&id=“群id”
响应:
<service no=”802” errno=”0”>
<item id="群id" name="第三期培训班聊天群" icon="头像地址" >;
....
</service>
建立群
请求:
http://..../service.aspx?no=810&name="群名称"&flag="" post数据: pic:群图标地址,可没有 desc:群简介
响应:
是否成功,成功之后服务器发xmpp消息告知
参数:
标识符 | 取值范围 | 说明 |
---|---|---|
name | 字符串 | 群名称 |
flag | 整数,加入类型 | 0不能加入 1不需要验证 2加入需要验证 |
加入群
请求:
http://..../service.aspx?no=810&id="群组id"&key="识别码"
响应:
<item id="群组id" jid="群组的jid" pwd="进群密码" nickname="进群昵称">
参数:
标识符 | 取值范围 | 说明 |
---|---|---|
key | 字符串 | 匹配服务器发过来的识别码。当房间可不需要验证加入的时候可为空 |
搜索群
请求:
http://..../service.aspx?no=820&keyword="adsasda"
响应:
返回格式与800协议一样
根据id获取用户信息
请求:
http://..../service.aspx?no=401&id=”11111”
响应:
和410协议返回的信息一样,再添加jid信息
参数:
标识符 | 取值范围 | 说明 |
---|---|---|
id | 字符串 | 用户id |