群聊协议

互动部分协议

流程描述

建立群:

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
原文地址:https://www.cnblogs.com/yulang314/p/3842430.html