更新时间: 2021-03-08

# 功能描述

融云主要是面向移动互联网设计的,在移动互联网概念中,所有的客户端都“永远在线”,不在线的客户端,会收到推送通知,就像微信一样。

但是,融云为了一些客户的场景需求考虑,提供了在线状态订阅及检查用户在线状态方法两个功能:

  1. 在线状态订阅服务

    需要开通 IM 商用版后才能使用,开通后用户状态有变更(上线、离线、登出)时,融云服务器会实时将状态同步到开发者设置的应用服务器地址,开发者接收到状态后自行实现业务处理。如应用中需要实时展示用户在线、离线状态时,可通过此服务来实现。

  2. 查询用户在线状态

    通过 Server API 接口主动查询某用户的在线状态,接口调用有频率限制,不能频繁调用,可应用于管理平台显示用户状态或集成融云 SDK 时检查某用户是否成功连接融云时使用。

# 在线状态订阅

# 参数说明
参数 类型 说明
userid String 用户 Id。
status String 状态:0:online 上线、1:offline 离线、2:logout 登出。
os String 操作系统:iOS、Android、Websocket、PC、MiniProgram(小程序),用户上线时同步。
time long 发生时间。
clientIp String 用户当前的 IP 地址及端口。

状态说明:

  • online 上线状态表示 App 已经连接到融云服务器,即客户端调用 connect 方法连接成功。
  • offline 离线状态表示 App 已经断开与融云服务器的连接,即客户端调用 disconnect 方法或因异常情况断开连接,极端情况下如应用连接了代理网络,应用异常断网,此时代理服务与融云服务的连接缓存仍然存在,在此情况下离线状态会延迟 5 分钟同步。
  • logout 登出状态表示 App 已经退出登录状态,即客户端调用 logout 方法。

同步在线状态时需要接收服务提供应答,只要有 HTTP 应答码 200 ,融云会认为状态已经同步,如果应答超时 5 秒,融云会再尝试推送 2 次,如果仍然失败,融云将不再同步此条状态。如短时间内有大面积超时,将暂停推送,1 分钟后会继续推送。

注:用户在 A 设备登录后,又在 B 设备上登录,B 将 A 踢下线后,用户在 A 设备的离线状态不会进行同步。

如果公司网络有 IP 访问限制需要将以下 IP 地址加入到白名单中,才可以使用此服务:

  • 国内数据中心:

    120.92.12.217、120.92.12.60、120.92.12.253、120.92.12.113、120.92.12.29、120.92.12.214、120.92.12.164、120.92.12.153、120.92.12.204、120.92.12.138、120.92.13.82、120.92.13.83、120.92.13.84、120.92.13.85、120.131.13.147

  • 海外数据中心:

    52.221.93.74

# 代码示例

每个请求将添加数据签名,开发者可对签名进行验证,确保调用者为融云服务及验证数据有效性,详细参见 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"
  }
]
已复制
1
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

# 查询在线状态

# 功能接口

请求地址: https://数据中心域名/user/checkOnline.json

请求方法: POST

调用频率: 每秒钟限 100 次

签名规则: 所有请求融云服务端 API 接口的请求均需要进行规则校验,详细请参考 通用 API 接口签名规则

# 输入参数
参数 类型 必传 说明
userId String 用户 Id。
# 返回结果
返回值 返回类型 说明
code Int 返回码,200 为正常。
status String 在线状态,1为在线,0为不在线。
# 请求代码

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
已复制
1
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"}
已复制
1
2
3
4

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助