首页 > 代码库 > 群聊协议

群聊协议

互动部分协议

流程描述

建立群:

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_GETDETAILBYUSERID401
获取自己加入群的列表SERVICE_GETJOINEDROOMS800
获得群的详细信息SERVICE_GETROOMINFO801
获取群的所有用户列表SERVICE_GETROOMOCCUPANTS802
建立群SERVICE_CREATEROOM810
加入群SERVICE_JOINROOM811
退出群SERVICE_EXITROOM812
获取自己加入群的列表

请求:

http://..../service.aspx?no=800&sid=”456578935498756”

响应:

<service no=”800” errno=”0”>    <item id="群id"  jid=“test@conference.com”   name="第三期培训班聊天群" icon="群图标地址" pwd="进群密码" nickname="昵称">;    ....</service>

参数:

标识符取值范围说明
no800SERVICE号,见前述“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