tencent cloud

即时通信 IM

动态与公告
产品动态
公告
产品简介
产品概述
基本概念
应用场景
功能介绍
账号系统
用户资料与关系链
消息管理
群组相关
公众号系统
音视频通话 Call
使用限制
购买指南
计费概述
价格说明
购买指引
续费指引
停服说明
退费说明
开发指引
Demo 专区
开通服务
体验 Demo
快速跑通
下载中心
SDK & Demo 源码
更新日志
聊天互动(含 UI)
TUIKit 组件介绍
快速开始
全功能接入
单功能接入
AI 集成
构建基础界面
更多特性
定义外观
国际化界面语言
推送服务(Push)
服务概述
名词解释
开通服务
快速跑通
厂商通道
数据统计
排查工具
客户端 API
服务端 API
推送回调
高级功能
更新日志
错误码
常见问题
智能客服
功能概述
快速入门
集成指引
管理员操作手册
客服操作手册
更多实践
直播间搭建
AI 聊天机器人方案
超大娱乐协作社群
Discord 实现指南
游戏内集成 Chat 指南
类 WhatsApp Channel 搭建方案
发送红包
Chat 应对防火墙限制相关
无 UI 集成
快速开始
集成 SDK
初始化
登录登出
消息相关
会话相关
群组相关
社群话题
用户管理
离线推送
云端搜索
本地搜索
公众号
客户端 API
JavaScript
Android
iOS & macOS
Swift
Flutter
Electron
Unity
React Native
C 接口
C++
服务端 API
生成 UserSig
REST API
第三方回调
控制台指南
新版控制台介绍
创建并升级应用
基本配置
功能配置
账号管理
群组管理
公众号管理
回调配置
用量统计
资源包查看指南
实时监控
开发辅助工具
访问管理
高级功能
常见问题
uni-app 常见问题
购买相关问题
SDK 相关问题
账号鉴权相关问题
用户资料与关系链相关问题
消息相关问题
群组相关问题
直播群相关问题
昵称头像相关问题
协议与认证
服务等级协议
安全合规认证
IM 政策
隐私政策
数据隐私和安全协议
平滑迁移方案
平滑迁移完整版
平滑迁移简化版
错误码
联系我们

在线状态管理

PDF
聚焦模式
字号
最后更新时间: 2026-02-11 17:28:30

概念介绍

每个用户的状态类型有以下三种:
前台运行状态(Online)
后台运行状态(PushOnline)
未登录状态(Offline)
注意
后台运行状态(PushOnline)只有手机端(Android、iOS、iPad)会存在,PC、Mac、Linux和 Web 端不存在该种状态。

前台运行状态(Online)

前台运行状态(Online),是指客户端和即时通信 Chat 服务端保持有顺畅的 TCP 网络连接,客户端可以发消息给即时通信 Chat 服务端,也可以收到来自即时通信 Chat 服务端推送的消息。
当用户打开 App 后,状态即为前台运行状态(Online)。
App 启动后,客户端和即时通信 Chat 服务端建立 TCP 长连接,即时通信 Chat 服务端保存客户端的在线信息,例如客户端的网络链路信息,客户端的平台版本等。App 在运行过程中,Chat SDK 会定时发送心跳来确认用户的在线状态。
说明
心跳:Chat SDK 每隔2分钟发一个心跳包给服务器,以确认用户的在线状态。

后台运行状态(PushOnline)

后台运行状态(PushOnline),是指客户端和即时通信 Chat 服务端的 TCP 长连接断开。此时可收到消息的离线推送。
以下场景用户的状态为后台运行状态(PushOnline):
用户使用完 App ,把 App 切后台后进程被手机操作系统 kill 掉,或者用户主动 kill 掉 App 进程。
如果 App 在手机操作系统的保活白名单中,用户把 App 切后台,进程并不会被手机操作系统 kill 掉。此时状态仍然为前台运行状态(Online)。前台运行状态(Online)和后台运行状态(PushOnline)判断的标准之一是 App 进程是否被 kill ,即客户端和即时通信 Chat 服务端的 TCP 长连接是否断开。
用户主动关闭客户端网络(例如打开手机飞行模式),或者客户端网络完全不可用(例如进入完全没有网络信号的隧道)。
在这种特殊情况下,客户端连 TCP 协议的 FIN 包或 RST 包都无法发出,即时通信 Chat 服务端需要等待 400 秒后发现心跳包超时,状态才会变成后台运行状态(PushOnline)。
注意
后台运行状态(PushOnline)只有手机端(Android、iOS、iPad)会存在,PC、Mac、Linux、小程序和 Web 端不存在该种状态。

未登录状态(Offline)

未登录状态(Offline),是指用户没有输入账号和密码登录前的状态,此时无法收到消息的在线推送,也无法收到消息的离线推送。
以下场景用户的状态为未登录状态(Offline):
用户主动登出,或下载 App 后还未进行过登录时。
用户状态变成后台运行状态(PushOnline)后,7天内没有再登录过,此时状态变为未登录状态(Offline)。

查询用户在线状态

App 后台可以通过 REST API:获取用户在线状态 来查询一批用户的在线状态。
Chat SDK 暂时无法获取用户的在线状态。

用户在线状态变更通知

即时通信 Chat 可以把用户上下线的事件通知给 App 后台,参见 状态变更回调 文档。

状态变更感知的实时性

Android/iOS/iPad/PC/Mac/Linux

对于绝大多数情况,用户状态的变化都能实时感知,例如:
用户主动登录,状态变成前台运行状态(Online)。
用户主动登出, 状态变成未登录状态(Offline)。
用户主动 kill 客户端进程,或者用户切后台后,客户端进程被手机操作系统 kill 掉,状态变成后台运行状态(PushOnline)。
只有以下一种特殊情况,Chat 云服务器需要等待400秒的心跳超时时间才能感知状态变更:
当网络完全不可用时,客户端连 TCP 协议层的 FIN 包或 RST 包都无法发出时,Chat 云服务器需要等待400秒的心跳超时时间才能感知到状态变成后台运行状态(PushOnline)。常见的场景有用户主动关闭客户端的网络(例如开启手机的飞行模式),或者进入完全没有网络信号的隧道。

Web

用户主动登录 Web 端时,Chat 云服务器可以实时感知到状态变成前台运行状态(Online)。
各种场景的退出/断线的状态变更实时性如下:
直接关闭页面,可以实时感知,状态变成未登录状态(Offline)。
页面不关闭时,网络断开,需要 60s 才能感知到,状态变成未登录状态(Offline)。
主动调用 destroy 接口,可以实时感知,变成未登录状态(Offline)。

小程序

用户主动登录小程序端时,Chat 云服务器可以实时感知到状态变成前台运行状态(Online)。
各种场景的退出/断线的状态变更实时性如下:
点右上角退出,5s 内感知到状态变成未登录状态(Offline)。
断网(如手机开启飞行模式) ,60s 感知到状态变成未登录状态(Offline)。
主动调用 destroy 接口,可以实时感知,变成未登录状态(Offline)。

多端登录

互踢

默认情况,Chat SDK 在同时登录多个终端(如同时登录 PC、Android)时,会进行互踢,只有最后一个登录的设备可以在线,之前登录的都会被踢下线,详细互踢逻辑可以参考以下文档:

同时在线

即时通信 Chat 支持在 控制台 修改同时在线策略,目前支持的多平台同时在线策略如下:
单平台登录:Android、iPhone、iPad、Windows、Mac、Web 仅可有1种平台在线。
双平台登录:Android、iPhone、iPad、Windows、Mac 可有1端在线;Web 可同时在线。
三平台登录:Android、iPhone、iPad 可有1种平台在线;Windows、Mac 可有1种平台在线;Web 可同时在线。
多平台登录:Android、iPhone、iPad、Windows、Mac、Web 可全平台同时在线。
默认情况下,每种平台只支持1个终端在线(如 Android 和 Android 会互踢),专业版、专业版Plus或企业版用户允许配置 Android、iPhone、iPad、Windows、Mac 同种平台可登录的最大实例数。另外,所有用户均可配置 Web 平台可登录的最大实例数。
同平台多设备在线,提升用户体验必备工具,支持配置同种平台可登录的最大实例数,防止同平台多设备上线后互踢的情况出现,让用户体验更丝滑。
说明
“同平台多设备在线”为 Chat 专业版、专业版Plus或企业版功能,购买专业版 、专业版Plus或企业版后可使用,详见 价格说明

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈