IM 即时通讯
Android
开发指南

聊天室重要消息投递

更新时间: 2023/09/22 17:35:27

由于聊天室存在流量控制机制(以下简称“流控机制”),用户在聊天室发送大量文字消息和自定义消息(如礼物消息)时,部分消息可能丢失。本文介绍如何在消息量大时尽可能地保证重要的自定义消息能够正常投递。

流控机制详情

  • 流控机制

    目前针对聊天室消息接收,有两套流控机制。第一套针对普通消息,聊天室用户每秒至多可接收20条,超过部分会因为流控随机丢弃。第二套针对高优先级消息,每秒至多接收10条,超过部分无法保证不丢失。

  • 引入原因

    网易云信基于如下原因,引入了上述流控机制:

    • 聊天室流量激增可能导致客户端 UI 渲染性能开销过高(过多的消息导致卡顿)和消息刷新的视觉体验下降(过多消息用户看不清,体验反而下降)。
    • 虽然服务器有扩容和负载均衡机制,但聊天室流量激增可能导致单台服务器过载,产生登录聊天室变慢和聊天室发消息耗时增加的现象,最终影响用户体验。

    如您有特殊需求,可通过云信官网首页右侧提供的联系方式申请调整流控配额。

推荐应对方案

  • 将聊天室用户发送的普通消息和不可丢失的自定义消息(如礼物消息)按如下方式进行区分:

    • 普通消息通过客户端发送,具体详情请参见各端的聊天室开发集成文档。
    • 不可丢失的自定义消息通过调用服务端 APIchatroom/sendMsg.action)发送,调用时将业务参数highPriority设置为true,从而将该自定义消息设置为高优先级消息。详情请参见发送聊天室消息
  • 在自定义消息为礼物消息的场景下,为了避免礼物消息数量过多超过高优消息每秒上限,自行开发如下两个方案,并将两者组合使用:

    方案
    说明
    方案一 根据礼物的级别分配不同的策略。例如:普通礼物每秒 5 条,高级礼物每秒 5 条,同时高级礼物没用完的条数配额可以分给普通礼物。
    方案二 如普通礼物数量较多,则将多个普通礼物合并到一条消息中发送。如果数量太多,合并的普通礼物消息数量也超过了每秒上限,则丢弃部分普通礼物消息的发送。因为在礼物数量很大的情况下,用户不会在意普通礼物展示是否少量丢失。
此文档是否对你有帮助?
有帮助
去反馈
  • 流控机制详情
  • 推荐应对方案