群聊协议

互动部分协议

流程描述

建立群:

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=“[email protected]”   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

群聊协议

时间: 2024-08-29 21:43:36

群聊协议的相关文章

xmpp muc 群聊协议 3

6. Entity Use Cases A MUC implementation MUST support Service Discovery [7]. 服务端必须实现 service discover 6.1 Discovering Component Support for MUC 发现服务器是否支持muc A Jabber entity may wish to discover if a service implements the Multi-User Chat protocol; in

xmpp muc 群聊协议 4

7. Occupant Use Cases The main actor in a multi-user chat environment is the occupant, who can be said to be located "in" a multi-user chat room and to participate in the discussions held in that room (for the purposes of this specification, par

xmpp muc 群聊协议 1

翻译来自 :http://wiki.jabbercn.org/index.php?title=XEP-0045&variant=zh-cn#.E6.9C.AF.E8.AF.AD 通用术语 Affiliation(岗位) -- 一个长期存在的和房间之间的联系或连接; 可能的岗位有 "owner"(所有者), "admin"(管理者), "member"(成员), 以及 "outcast"(被排斥者) (当然也可能没有岗位

Java--&gt;实现群聊功能(C/S模式--TCP协议)

--> Java 对TCP协议的支持: --> java.net包中定义了两个类ServerSocket 和Socket ,分别用来实现双向连接的server 端和client 端. --> Client 类定义客户端 package com.dragon.java.tcpchat; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; /** * 客户端 * *

使用java做一个能赚钱的微信群聊机器人(2020年基于PC端协议最新可用版)

前言 微信群机器人,主要用来管理群聊,提供类似天气查询.点歌.机器人聊天等用途. 由于微信将web端的协议封杀后,很多基于http协议的群聊机器人都失效了,所以这里使用基于PC端协议的插件来实现. 声明以下过程只用于交流学习,并不用于任何商业用途,这里记录一下整体的开发流程. 效果展示 接入过程 准备材料 下文中的服务器可以只需要一台,或者使用你本地电脑,我介绍一下我的环境. 可爱猫微信机器人插件V4.4.0. 一台windows服务器. 一台linux服务器. nginx安装(在window服

实现了私聊和群聊功能的聊天工具

在前面的博客(简单的C/S聊天室)中,我们已经提到了,采用的是多线程的方法.服务器端主线程负责不断的侦听端口,子线程负责接收和发送消息.客户端主线程需要接收键盘消息,将其发送到服务器端,子线程需要接收服务器端发过来的消息.在这个简易的C/S聊天室的实现中,仅仅实现了群聊的功能,没有实现私聊.那么,本文就讲实现私聊和群聊. 首先我们想到的是,消息发过来,我怎么知道是公聊消息还是私聊消息呢.所以,这里需要对消息进行处理,比如说在消息前后都加上一些特殊的字符,我们称为协议字符.为此,我们可以定义一个接

JAVA使用多播套接字实现群聊室(局域网)

import java.awt.Dimension; import java.awt.TextArea; import java.awt.TextField; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent;

群聊内实现私聊功能

首先我们想到的是,消息发过来,我怎么知道是公聊消息还是私聊消息呢.所以,这里需要对消息进行处理,比如说在消息前后都加上一些特殊的字符,我们称为协议字符.为此,我们可以定义一个接口,专门来定义协议字符. 第二个问题就是,如果是私聊信息,客户端会将目的用户(私聊对象)发给服务器端,那么服务器端是如何将找到那个目的用户的呢.这里,很明显,我们需要建立一个用户和Socket的映射关系,所以我们采用了map,但是这里的map我们需要改进一下,因为其实我们这里不仅仅是key不能重复,而且value也不能重复

群聊

XMPP在其XEP-0045扩展中定义了一个用于多用户文本会议(群聊)的协议,类似于聊天室.QQ群等.由于它作为一个标准协议在定义模型上力求完备,涵盖了现实中的绝大部分IM产品模型,而现实中的IM产品基本都只实现了XMPP定义的模型中的一个子集.XMPP定义的一些基本概念:房间:房间的JID标识 <[email protected]> (例如, <[email protected]>), 这里 "room" 是房间的名称而 "service"