IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 山东大学软件学院创新实训——飞讯(四) -> 正文阅读

[网络协议]山东大学软件学院创新实训——飞讯(四)

目录

一.腾讯云im第三方回调

?二.回调分类

三.回调示例

1.请求url

2.请求包示例

3.应答包示例

4.代码


一.腾讯云im第三方回调

所谓回调,即即时通信 IM 后台会在某一事件发生之前或者之后,向 App 的后台服务器发送请求,App 后台可以据此进行必要的数据同步,或者干预事件的后续处理流程。

第三方回调将通过 HTTP/HTTPS 请求的方式发送给 App 后台服务器,App 后台服务器需要处理即时通信 IM 的回调请求并尽快进行应答。以群内发言之前回调为例,即时通信 IM 后台会在下发该消息之前回调 App 后台服务器,并根据回调结果决定该消息是否应当下发,App 不仅可以基于该回调来实现消息同步,而且可以进行发消息安全打击。回调业务流程如下图所示:

?二.回调分类

从功能角度来看,回调可以分为四大类:

  • 在线状态回调
  • 资料关系链回调
  • 单聊消息回调
  • 群组系统回调

从处理角度来看,回调可以分为以下两大类:

  • 事件发生之前回调:回调的主要目的在于让 App 后台可以干预该事件的处理逻辑,即时通信 IM 会根据回调返回码确定后续处理流程(例如发送群消息之前回调)。
  • 事件发生之后通知:回调的主要目的在于让 App 后台实现必要的数据同步,即时通信 IM 忽略回调返回码(例如群组成员退群之后通知)。

三.回调示例

1.请求url

https://www.example.com?SdkAppid=$SDKAppID&CallbackCommand=$CallbackCommand&contenttype=json&ClientIP=$ClientIP&OptPlatform=$OptPlatform

请求参数说明

参数说明
https请求协议为 HTTPS,请求方式为 POST
www.example.com回调 URL
SdkAppid创建应用时在即时通信 IM 控制台分配的 SDKAppID
CallbackCommand固定为:State.StateChange
contenttype固定值为 JSON
ClientIP客户端 IP,格式如:127.0.0.1
OptPlatform客户端平台,取值参见 第三方回调简介:回调协议 中 OptPlatform 的参数含义

2.请求包示例

{
    "CallbackCommand": "State.StateChange",
    "EventTime": 1629883332497,
    "Info": {
        "Action": "Login",
        "To_Account": "testuser316",
        "Reason": "Register"
    },
    "KickedDevice": [
        {
            "Platform": "Windows"
        },
        {
            "Platform": "Android"
        }
    ]
}

请求包字段说明

字段类型说明
CallbackCommandString回调命令
InfoObject用户上下线的信息
ActionString用户上线或者下线的动作,Login 表示上线(TCP 建立),Logout 表示下线(TCP 断开),Disconnect 表示网络断开(TCP 断开)
To_AccountString用户 UserID
ReasonString用户上下线触发的原因:
  • Login 的原因有 Register:App TCP 连接建立或断网重连
  • Logout 的原因有 Unregister:App 用户注销帐号导致 TCP 断开
  • Disconnect 的原因有 LinkClose:即时通信 IM 检测到 App TCP 连接断开(例如 kill App,客户端发出 TCP 的 FIN 包或 RST 包);TimeOut:即时通信 IM 检测到 App 心跳包超时,认为 TCP 已断开(例如客户端网络异常断开,未发出 TCP 的 FIN 包或 RST 包,也无法发送心跳包)。心跳超时时间为400秒
  • 各种具体场景触发的回调 Reason 请参考 可能触发该回调的场景
KickedDeviceArray如果本次状态变更为 Login(Register),而且有其他设备被踢下线,才会有此字段。此字段表示其他被踢下线的设备的信息。
KickedDevice.PlatformString被踢下线的设备的平台类型,可能的取值有"iOS", "Android", "Web", "Windows", "iPad", "Mac", "Linux"。
EventTimeInteger触发本次回调的时间戳,单位为毫秒。

3.应答包示例

{
    "ActionStatus": "OK",
    "ErrorCode": 0,
    "ErrorInfo": ""
}

应答包字段说明

字段类型属性说明
ActionStatusString必填请求处理的结果,OK 表示处理成功,FAIL 表示失败
ErrorCodeInteger必填错误码,0表示 App 后台处理成功,1表示 App 后台处理失败
ErrorInfoString必填错误信息

4.代码

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 12:12:37  更:2022-04-26 12:14:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:44:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码