App 后台可以通过该回调实时监控用户上、下线的行为,包括:
对于绝大多数情况,用户状态的变化都能实时感知,从而实时地触发回调。例如:
只有以下一种特殊情况,IM 云服务器需要等待400秒的心跳超时时间才能感知状态变更:
当网络完全不可用时,客户端连 TCP 协议层的 FIN 包或 RST 包都无法发出时,IM 云服务器需要等待 400 秒的心跳超时时间才能触发 Disconnect + TimeOut 回调。常见的场景有用户主动关闭客户端的网络(例如开启手机的飞行模式),或者进入完全没有网络信号的隧道。
用户主动登录 Web 端时,IM 云服务器可以实时感知,实时触发回调。
用户网络不可用,或者直接关闭 Web 页面时,IM 云服务器需要等待400秒的心跳超时时间才能触发回调。
以下示例中 App 配置的回调 URL 为 https://www.example.com
。
示例:
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 的参数含义 |
{
"CallbackCommand": "State.StateChange",
"Info": {
"Action": "Logout",
"To_Account": "testuser316",
"Reason": "Unregister"
}
}
字段 | 类型 | 说明 |
---|---|---|
CallbackCommand | String | 回调命令 |
Info | Object | 用户上下线的信息 |
Action | String | 用户上线或者下线的动作,Login 表示上线(TCP 建立),Logout 表示下线(TCP 断开),Disconnect 表示网络断开(TCP 断开) |
To_Account | String | 用户 UserID |
Reason | String | 用户上下线触发的原因:
|
{
"ActionStatus": "OK",
"ErrorCode": 0,
"ErrorInfo": ""
}
字段 | 类型 | 属性 | 说明 |
---|---|---|---|
ActionStatus | String | 必填 | 请求处理的结果,OK 表示处理成功,FAIL 表示失败 |
ErrorCode | Integer | 必填 | 错误码,0表示 App 后台处理成功,1表示 App 后台处理失败 |
ErrorInfo | String | 必填 | 错误信息 |
Was this page helpful?