聊天室介绍
功能描述
聊天室成员不设用户上限,海量消息并发即时到达,用户退出聊天界面后即视为离开聊天室,不会再接收到任何聊天室中消息,没有推送通知功能。会话关系由融云负责建立并保持连接,通过 SDK 相关接口,可以让用户加入或者退出聊天室。
主要功能
功能 | 描述 |
---|---|
离线消息 | 不支持离线消息,只有当前在线用户可收到聊天室中消息 |
人数限制 | 聊天室人数无上限 |
消息提醒 | 离线后不再接收聊天室中消息。 |
本地存储 | 退出聊天室后同时删除本地聊天室消息,不支持消息搜索功能。 |
历史消息 | 提供服务端消息存储存功能,需开通聊天室消息云存储,默认存储时长为 2 个月。 |
创建聊天室 | App 内的聊天室数量没有限 制。 |
销毁聊天室 | 将指定聊天室解散,所有成员都无法再接收该聊天室的消息。 |
查询聊天室信息 | 查询聊天室基础信息,包括:聊天室 ID、名称、创建时间。 |
获取聊天室成员 | 获取的聊天室成员信息数,包括:用户 ID、加入时间,最多返回 500 个成员信息,支持按加入时间排序。 |
指定聊天室禁言 | 用户在指定聊天室中禁言,被禁言用户可以接收查看聊天室中用户聊天信息,但不能发送消息。 |
用户聊天室全局禁言 | 用户在应用中的所有聊天室中禁言,被禁言用户可以接收查看聊天室中用户聊天信息,但不能发送消息。 |
聊天室用户封禁 | 在 App 中如果想将某一用户踢出聊天室并在一段时间内不允许再进入聊天室时,可实现将用户对指定的聊天室做封禁处理,被封禁用户将被踢出聊天室,并在设定的时间内不能再进入聊天室中。 |
指定聊天室全局禁言 | 对指定聊天室做禁言处理,聊天室中所有用户都不能发送消息。 |
消息优化级 | 通过聊天室消息优先级接口,设置的消息类型为低优先级的消息,默认情况下全部为高的消息,当服务器负载高时低优先级的消息优先被丢弃,这样可以让出资源给高优先级的消息,确保重要的消息不被丢弃。 |
消息白名单 | 白名单 中的消息类型受到保护,在聊天室消息量较大的情况下也不被丢弃。 |
用户白名单 | 白名单中用户发送的消息受到保护,在聊天室消息量较大的情况下也不被丢弃。同时用户处于被保护状态,以避免在离线 30 秒后有新消息产生时或离线后聊天室中产生 30 条消息时被自动踢出聊天室。 |
聊天室保活 | 聊天室保活功能,可以确保聊天室在此状态下不被自动销毁,只能通过调用 API 接口销毁聊天室。 |
状态同步 | 聊天室发生状态变化时,将实时同步到开发者的应用服务器,目前支持的同步状态包括:创建、销毁、成员加入、成员退出聊天室。 |
属性自定义 | 每个聊天室中,最多允许设置 100 个属性信息,以 Key、Value 的方式进行存储,聊天室销毁后,聊天室中的自定义属性同时销毁。 |
消息撤回 | 消息发送成功后,在有效时间内可撤回该条消息,默认可撤回时间为 2 分钟,时间可配置。 |
消息类型
功能 | 描述 |
---|---|
离线消息 | 不支持离线消息,只有当前在线用户可收到聊天室中消息 |
人数限制 | 聊天室人数无上限 |
消息提醒 | 离线后不再接收聊天室中消息。 |
本地存储 | 退出聊天室后同时删除本地聊天室消息,不支持消息搜索功能。 |
历史消息 | 提供服务端消息存储存功能,需开通聊天室消息云存储,默认存储时长为 2 个月。 |
创建聊天室 | App 内的聊天室数量没有限制。 |
销毁聊天室 | 将指定聊天室解散,所有成员都无法再接收该聊天室的消息。 |
查询聊天室信息 | 查询聊天室基础信息,包括:聊天室 ID、名称、创建时间。 |
获取聊天室成员 | 获取的聊天室成员信息数,包括:用户 ID、加入时间,最多返回 500 个成员信息,支持按加入时间排序。 |
指定聊天室禁言 | 用户在指定聊天室中禁言,被禁言用户可以接收查看聊天室中用户聊天信息,但不能发送消息。 |
用户聊天室全局禁言 | 用户在应用中的所有聊天室中禁言,被禁言用户可以接收查看聊天室中用户聊天信息,但不能发送消息。 |
聊天室用户封禁 | 在 App 中如果想将某一用户踢出聊天室并在一段时间内不允许再进入聊天室时,可实现将用户对指定的聊天室做封禁处理,被封禁用户将被踢出聊天室,并在设定的时间内不能再进入聊天室中。 |
指定聊天室全局禁言 | 对指定聊天室做禁言处理,聊天室中所有用户都不能发送消息。 |
消息优化级 | 通过聊天室消息优先级接口,设置的消息类型为低优先级的消息,默认情况下全部为高的消息,当服务器负载高时低优先级的消息优先被丢弃,这样可以让出资源给高优先级的消息,确保重要的消息不被丢弃。 |
消息白名单 | 白名单中的消息类型受到保护,在聊天室消息量较大的情况下也不被丢弃。 |
用户白名单 | 白名单中用户发送的消息受到保护,在聊天室消息量较大的情况下也不被丢弃。同时用户处于被保护状态,以避免在离线 30 秒后有新消息产生时或离线后聊天室中产生 30 条消息时被自动踢出聊天室。 |
聊天室保活 | 聊天室保活功能,可以确保聊天室在此状态下不被自动销毁,只能通过调用 API 接口销毁聊天室。 |
状态同步 | 聊天室发生状态变化时,将实时同步到开发者的应用服务器,目前支持的同步状态包括:创建、销毁、成员加入、成员退出聊天室。 |
属性自定义 | 每个聊天室中,最多允许设置 100 个属性信息,以 Key、Value 的方式进行存储,聊天室销毁后,聊天室中的自定义属性同时销毁。 |
消息撤回 | 消息发送成功后,在有效时间内可撤回该条消息,默认可撤回时间为 2 分钟,时间可配置。 |
与群组的区别
融云提供群组与聊天室业务,其主要区别如下,客户可根据自己的业务场景进行选择:
功能 | 群组(group) | 聊天室(Chatroom) |
---|---|---|
场景 | 类似微信的群组,无论是否在线都会接收消息 | 只有在线用户可接收消息,可用于直播、社区、游戏、广场交友、兴趣讨论等场景。 |
离线缓存消息 | 支持离线消息存储,存储时间可设置(1 ~ 7 天),默认存储 7 天。 | 无离线消息,只有在线用户才可收到聊天室消息 |
人数限制 | 默认一个群上限为 3000 人 | 聊天室人数无上限 |
消息提醒 | 离线状态,群组中有新消息时,支持远程推送(PUSH)通知 | 离开聊天室后不再接收消息 |
本地存储 | 移动端本地数据库存储,提供本地消息搜索接口 | 退出聊天室后同时删除本地聊天室消息,不支持消息搜索功能 |
云端存储 | 需开通单群聊消息云存储,可以提供 6 - 36 个月存储服务 | 需开通聊天室消息云存储,可以提供 2 - 36 个月存储服务 |
用户加入限制 | 一个用户可加入多个群组,无限制 | 默认一个用户只能加入一个聊天室,加入多个聊天室功能可在控制台自行开通 |
加入后消息获取逻辑 | 默认加入群组后,只能查看加入后群组中产生的消息。如需要查看群历史消息,则需要开通单群聊消息云存储后,再开通“查看加入前群消息”功能 | 加入后可获取聊天室中最新的 50 条消息。 |
销毁/解散逻辑 | 需要通过 AppServer 自行调用解散群组接口。 | 提供销毁聊天室接口,可通过 AppServer 调用。同时聊天室中 1 小时内没有消息产生时,将自动销毁聊天室。 |
消息可靠度 | 100% 可靠,不丢消息。 | 消息量较大时,超出服务端消费上限的消息将被主动抛弃。您可通过用户白名单、消息白名单、自定义消息级别等服务,改变消息抛弃策略。如果用户在聊天室的用户白名单内,该用户所发送的消息在消息量大时也不会被抛弃。 如需了解服务端消费上限与如何改变消息抛弃策略,可参见服务端文档消息优先级服务、聊天室白名单服务。 |
相关接口调用 | SDK 不提供群组管理功能接口,通过 Server API 提供群组功能接口。 | SDK 和 Server API 同时提供功能接口,销毁聊天室操作只能通过 Server API 方式调用。 |
发送消息频率 | 每个客户端 5 条/秒;服务端调用,20 条/秒 | 每个客户端 5 条/秒;服务端调用,100 条/秒 |
常见问题
聊天室登录、重连问题
登录聊天室是否要先连接融云
必须先连接融云,所有接口都是连接融云后才可以调用。
是否可以实现匿名登录
从融云 SDK 的角度,都是需要确定一个 UserId 来与融云服务器连接,以保证其后所有的操作都有指向性。
但作为 App 应用层来讲,可以不暴露融云的 UserId,所谓匿名就是以一个随机的或者说不跟你们应用帐号绑定的 UserId 来登录。
断线情况如何处理
进入聊天室后如果出现断开连接,当与融云服务器的连接恢复后,SDK 会尝试重连聊天室。重连过程不需要用户参与,用户可以设置聊天室状态监听,来获取聊天室重连的状态信息。
聊天室消息问题
进入时如何获取最新消息
对于同一个聊天室,只存储该聊天室的 50 条最新消息,也就是说移动端用户进入聊天室时,最多能够拉取到最新的 50 条消息。
可通过融云加入聊天室方法,设置获取历史消息条 数,加入后可获取到对应条数的历史消息。
如何发送用户进入聊天室消息
如用户加入聊天室时,需要发送“XX加入聊天室”的通知消息,可通过融云 Server API 发送聊天室消息接口,自行向聊天室中发送一条消息,可以在消息体中附加其他需要的信息属性。
如何向应用下所有聊天室发送消息
在直播聊天场景下,如需要向应用下所有聊天室发送消息时,可使用聊天室广播消息功能,发送后所有在聊天室中的用户都将收到此条消息,如:聊天室管理通知、优惠活动系统通知等。
点赞、礼物消息问题
如何发送展示点赞消息
通过融云提供的自定义消息功能,定义礼物的消息类型,实现点赞功能,鉴于有些用户会连续点击,建议做消息合并机制处理。比如设置定时器,每 5 秒触发一次,将 5 秒内所有的点赞数一次性发出去,降低服务器压力,保证重要消息的畅达。
** 如何发送展示礼物消息 **
通过融云提供的自定义消息功能,定义礼物的消息类型,实现礼物功能,展示方式就是界面上的一个 View,完全可以根据你们的需求来自定义。因为聊天室类型的应用 UI 都是特殊定制的,作为融云 SDK 来讲,只是负责消息通知,并不负责 UI 绘制。
聊天室用户信息显示
如何显示用户昵称和头像
融云不维护用户的信息,所以用户的昵称和头像信息都需要您自己来维护管理。详细请查看用户信息显示集成指南。
如何显示用户列表
用户列表显示逻辑是根据您的需求来确定。举一个例子:聊天室人数从几百到十几万不等,比如需求定为只显示 10 个用户的头像,那就可以根据用户等级或者加入时间的顺序,选取 10 个在线用户的信息来显示。可以由应用自己的服务器来维护这个用户列表,不定时通知给全体成员,也可以每个用户加入/退出聊天室时发送状态消息,由端上接收并维护这个列表。显示的方法也是移动端进行 UI 绘制。
如何显示用户等级信息
融云不维护用户的信息,所以关于用户信息和等级的显示,都需要您自己进行开发。通常有两种处理方式:
- 在收到消息需要展示用户信息的时候,您可以通过您的 Server 端接口获取到用户信息来展示。
- 用户在发送消息时把自己的信息附加到消息中,接收方通过解析消息获得用户信息。
聊天室管理功能
聊天室踢人功能实现
可通过调用融云 Server API 聊天室封禁服务接口,实现将用户踢出聊天室。
设置聊天室禁言用户
可通过融云 Server API 接口,设置聊天室禁言用户,被禁言用户不能在聊天室中发送消息,详细请查看聊天室成员禁言服务。
聊天室成员自动退出机制
聊天室中用户在离线 30 秒后有新消息产生时或离线后聊天室中产生 30 条消息时会被自动退出聊天室。如应用场景中有驻留用户,不允许被自动退出聊天室,则需要将用户加入到聊天室白名单中。
聊天室用户白名单设置方法
可通过融云 Server API 接口,设置聊天室白名单,详细请查看聊天室用户白名单服务。
聊天室自动销毁机制
聊天室中 1 小时无人说话时,同时没有人加入聊天室时,会把聊天室内所有成员踢出聊天室并销毁聊天室。
聊天室不被自动销毁实现方式
可通过融云 Server API 接口,设置需要保活的聊天室,设置后聊天室不会被自动销毁,详细请查看聊天室保活服务。
用户如何同时加入多个聊天室
默认同一用户不能同时加入多个聊天室,可通过提交工单方式开启用户同时加入多个聊天室功能。同时,在开启多设备消息同步情况下,多端用户可同时加入到多个聊天室。
如何动态获取聊天室在线人数
调用 Server API 中的查询聊天室内用户方法,可通过返回值 total
获取聊天室中在线人数。