腾讯云即时通信IM在线状态管理_AI解决方案_同尘科技
概念介绍
每个用户的状态类型有以下三种:前台运行状态(Online)后台运行状态(PushOnline)未登录状态(Offline)注意后台运行状态(PushOnline)只有手机端(Android、iOS、iPad、Mac)会存在,PC、Linux、小程序和 Web 端不存在该种状态。
前台运行状态(Online)
前台运行状态(Online),是指客户端和即时通信 IM 服务端保持有顺畅的 TCP 网络连接,客户端可以发消息给即时通信 IM 服务端,也可以收到来自即时通信 IM 服务端推送的消息。当用户打开 App 后,状态即为前台运行状态(Online)。App 启动后,客户端和即时通信 IM 服务端建立 TCP 长连接,即时通信 IM 服务端保存客户端的在线信息,例如客户端的网络链路信息,客户端的平台版本等。App 在运行过程中,IM SDK 会定时发送心跳来确认用户的在线状态。说明心跳:IM SDK 每隔2分钟发一个心跳包给服务器,以确认用户的在线状态。
后台运行状态(PushOnline)
后台运行状态(PushOnline),是指客户端和即时通信 IM 服务端的 TCP 长连接断开。此时可收到消息的离线推送。
以下场景用户的状态为后台运行状态(PushOnline):用户使用完 App ,把 App 切后台后进程被手机操作系统 kill 掉,或者用户主动 kill 掉 App 进程。
如果 App 在手机操作系统的保活白名单中,用户把 App 切后台,进程并不会被手机操作系统 kill 掉。此时状态仍然为前台运行状态(Online)。前台运行状态(Online)和后台运行状态(PushOnline)判断的标准之一是 App 进程是否被 kill ,即客户端和即时通信 IM 服务端的 TCP 长连接是否断开。用户主动关闭客户端网络(例如打开手机飞行模式),或者客户端网络完全不可用(例如进入完全没有网络信号的隧道)。
在这种特殊情况下,客户端连 TCP 协议的 FIN 包或 RST 包都无法发出,即时通信 IM 服务端需要等待 400 秒后发现心跳包超时,状态才会变成后台运行状态(PushOnline)。注意后台运行状态(PushOnline)只有手机端(Android、iOS、iPad)会存在,PC、Mac、Linux、小程序和 Web 端不存在该种状态。
未登录状态(Offline)
未登录状态(Offline),是指用户没有输入账号和密码登录前的状态,此时无法收到消息的在线推送,也无法收到消息的离线推送。
以下场景用户的状态为未登录状态(Offline):用户主动登出,或下载 App 后还未进行过登录时。用户状态变成后台运行状态(PushOnline)后,7天内没有再登录过,此时状态变为未登录状态(Offline)。
查询用户在线状态
App 后台可以通过 REST API:获取用户在线状态 来查询一批用户的在线状态。
终端 SDK 6.3及以上版本、Web SDK 2.21.0及以上版本支持获取用户的在线状态。
用户在线状态变更通知
即时通信 IM 可以把用户上下线的事件通知给 App 后台,参见 状态变更回调 文档。
状态变更感知的实时性
Android/iOS/iPad/PC/Mac/Linux
对于绝大多数情况,用户状态的变化都能实时感知,例如:用户主动登录,状态变成前台运行状态(Online)。用户主动登出, 状态变成未登录状态(Offline)。用户主动 kill 客户端进程,或者用户切后台后,客户端进程被手机操作系统 kill 掉,状态变成后台运行状态(PushOnline)。只有以下一种特殊情况,IM 云服务器需要等待400秒的心跳超时时间才能感知状态变更:
当网络完全不可用时,客户端连 TCP 协议层的 FIN 包或 RST 包都无法发出时,IM 云服务器需要等待400秒的心跳超时时间才能感知到状态变成后台运行状态(PushOnline)。常见的场景有用户主动关闭客户端的网络(例如开启手机的飞行模式),或者进入完全没有网络信号的隧道。
Web
用户主动登录 Web 端时,IM 云服务器可以实时感知到状态变成前台运行状态(Online)。各种场景的退出/断线的状态变更实时性如下:直接关闭页面,可以实时感知,状态变成未登录状态(Offline)。页面不关闭时,网络断开,需要 60s 才能感知到,状态变成未登录状态(Offline)。主动调用 destroy 接口,可以实时感知,变成未登录状态(Offline)。
小程序
用户主动登录小程序端时,IM 云服务器可以实时感知到状态变成前台运行状态(Online)。各种场景的退出/断线的状态变更实时性如下:点右上角退出,5s 内感知到状态变成未登录状态(Offline)。断网(如手机开启飞行模式) ,60s 感知到状态变成未登录状态(Offline)。微信切后台,30s 左右状态变成未登录状态(Offline)。杀掉微信进程,可以实时感知,变成未登录状态(Offline)。主动调用 destroy 接口,可以实时感知,变成未登录状态(Offline)。
多端登录
互踢
默认情况,IM SDK 在同时登录多个终端(如同时登录 PC、Android)时,会进行互踢,只有最后一个登录的设备可以在线,之前登录的都会被踢下线,详细互踢逻辑可以参考以下文档:多端登录与互踢
同时在线
即时通信 IM 支持在 控制台 修改同时在线策略,目前支持的多平台同时在线策略如下:单平台登录: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 会互踢),旗舰版用户允许配置 Android、iPhone、iPad、Windows、Mac 同种平台可登录的最大实例数。另外,所有用户均可配置 Web 平台可登录的最大实例数。同平台多设备在线,提升用户体验必备工具,支持配置同种平台可登录的最大实例数,防止同平台多设备上线后互踢的情况出现,让用户体验更丝滑。说明“同平台多设备在线”为 IM 旗舰版功能,购买旗舰版套餐包 后可使用,详见 价格说明。
对即时通讯IM解决方案有疑惑?想了解解决方案收费? 联系解决方案专家
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠
阿里云解决方案也看看?: 点击对比阿里云的解决方案
暂无评论,你要说点什么吗?