( 最近更新时间:2020-04-28 19:00:00 )
# 功能描述
融云主要是面向移动互联网设计的,在移动互联网概念中,没有“在线”的状态,所有的客户端都“永远在线”,不在线的客户端,会收到推送通知,就像微信一样。
但是,融云为了一些客户的场景需求考虑,提供了在线状态订阅及检查用户在线状态方法两个功能:
在线状态订阅服务
需开通 “IM 商用版”后才能使用,开通后用户状态如有变更(在线、离线、登出)时,融云服务器会实时将状态同步到开发者设置的应用服务器地址,开发者接收到状态后自行实现业务处理。如应用中需要实时展示用户在线、离线状态时,可通过此服务来实现。
检查用户在线状态方法
免费服务,通过 Server API 接口主动查询某用户的在线状态,接口有频率限制,不能频繁调用,可应用于管理平台显示用户状态或集成融云 SDK 时检查某用户是否成功连接融云时使用。
# 在线状态订阅
# 参数说明
参数 | 类型 | 说明 |
---|---|---|
userid | String | 用户 Id。 |
status | String | 状态:0:online 在线、1:offline 离线、2:logout 登出。 |
os | String | 操作系统,iOS 、 Android 或 Websocket,用户上线时同步。 |
time | long | 发生时间。 |
clientIp | String | 用户当前的 IP 地址及端口。 |
状态说明:
online
在线状态表示 App 已经连接融云服务器,即客户端调用connect
方法连接成功。offline
离线状态表示 App 已经断开与融云服务器的连接,异常断网情况下离线状态会延迟 5 分钟同步。logout
登出状态表示 App 已经注销登录状态,即客户端调用logout
或disconnect
方法注消登录,用户注销登录同时也会同步离线状态。
同步在线状态时都需要接收服务提供应答,只要有 HTTP 应答码 200 ,融云会认为状态已经同步,如果应答超时 5 秒,融云会再尝试推送 2 次,如果仍然失败,融云将不再同步此条状态。如短时间内有大面积超时,将暂停推送,1 分钟后会继续推送。异常断网情况下的在线状态会延迟 5 分钟同步。
# 代码示例
为了验证数据有效性并确保调用者为融云 Server,每个请求前添加数据签名,详细参见 API 接收签名规则,签名信息参数在接收地址的 URL 上提供。
假设开发者提交的在线状态订阅地址:http://example.com/online_status.php
请求方法: POST
Request:
POST /online_status.php?signTimestamp=1408710653491&nonce=14314&signature=45beb7cc7307889a8e711219a47b7cf6a5b000e8 HTTP/1.1 Host: example.com Content-Type: application/json [ { "userid": "apert60541", "status": "1", "os": "iOS", "time": 1437982625625, "clientIp":"172.20.10.94:41748" }, { "userid": "apert60592", "status": "1", "os": "Android", "time": 1437982625625, "clientIp":"172.20.10.94:41748" }, { "userid": "apert60533", "status": "2", "os": "Android", "time": 1437982625625, "clientIp":"172.20.10.94:41748" } ]
已复制
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 查询在线状态
# 输入参数
参数 | 类型 | 必传 | 说明 |
---|---|---|---|
userId | String | 是 | 用户 Id。 |
# 返回结果
返回值 | 返回类型 | 说明 |
---|---|---|
code | Int | 返回码,200 为正常。 |
status | String | 在线状态,1为在线,0为不在线。 |
# 请求代码
请求地址: https://数据中心域名/user/checkOnline.json
请求方法: POST
调用频率: 每秒钟限 100 次
签名规则: 所有请求融云服务端 API 接口的请求均需要进行规则校验,详细请参考 通用 API 接口签名规则
Request:
POST /user/checkOnline.json HTTP/1.1 Host: api-cn.ronghub.com App-Key: uwd1c0sxdlx2 Nonce: 14314 Timestamp: 1408710653491 Signature: 45beb7cc7307889a8e711219a47b7cf6a5b000e8 Content-Type: application/x-www-form-urlencoded userId=jlk456j5
已复制
2
3
4
5
6
7
8
9
Response:
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 {"code":200,"status":"1"}
已复制
2
3
4