• 群聊协议


    互动部分协议

    流程描述

    建立群:

    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
  • 相关阅读:
    JQuery中的回调对象
    CSS中的视觉格式化模型
    css中的选择器
    浅谈css中的position
    python-24: re 模块 之二 re方法及反斜杠
    python-23 xml.etree.ElementTree模块
    python-22 eval json pickle shelve 之间差别
    python-21 os 模块
    python-18: datetime 模块
    python-16: time 模块 之二
  • 原文地址:https://www.cnblogs.com/yulang314/p/3842430.html
Copyright © 2020-2023  润新知