即时通讯总览
即时通讯是主要解决产品内即时通信(Instant Messaging)、实时数据同步等需求,其设计上的主要目标是:
-
支持为现有应用快速加入多种通讯能力
我们很多客户的产品都已经达到一个比较稳定的形态,即时通讯只是其中一个锦上添花的功能,所以如何和现有系统无缝集成,是我们设计上一个重要的出发点。即时通讯服务可以在应用账户系统独立的情况下,快速接入并稳定安全地运行。
我们支持了多种典型通讯场景,提供了丰富的 UI 库和脚手架来帮助开发者快速接入。并且考虑到业务运行环境,我们提供了全平台支持的 SDK。
-
强大的自定义机制满足业务各种扩展需求
我们默认支持了文本、图片、音视频、地理位置、二进制等多种类型的消息收发,同时也允许产品开发者来扩展自己的消息类型和 UI 样式。并且在基本功能之外,我们也支持更多高阶需求,例如消息撤回与修改、@ 成员提醒、暂态消息、「已读」回执、离线推送、敏感内容过滤等等与消息收发相关的功能,或者超大规模用户参与的「开放聊天室」,以及类似于微信公众号的「系统对话」,在这里都可以得到满足。
-
安全和权限控制
我们始终把系统安全性放在首要位置,客户端与云端使用 WebSocket 全双工通讯,全程 TLS 加密传输。在用户登录和操作权限的控制上,我们专门设计了第三方操作签名的机制,让应用层在快速接入的同时,也可以实时、完整地控制用户在即时通讯系统内的所有活动。
-
最大限度降低客户的生产运维成本
我们提供专业的技术支持服务,富有经验的资深工程师 7 × 24 小时对接,以帮助开发者快速、有效地完成产品集成,缩短开发周期。此外在产品运营阶段,让开发者彻底摆脱后端系统日常的运维细节和突发的软硬件故障处理,也不用关心用户量和流量的变化。帮助客户在享受高品质技术服务的同时,也可以最大限度降低生产运维成本,并且以更快的速度推进产品迭代,是我们始终追求的目标。
即时通讯服务现在已经被广泛使用在应用内社交、工作协同、客服系统、超大型赛事和电视直播、以及游戏状态同步等多种业务场景之中。
功能和特性
即时通讯服务提供的主要功能有:
-
基本聊天功能,包括:
- 支持多种聊天场景。除了普通的单聊、群聊之外,我们还提供不限人数的「开放聊天室」,适合活动直播、公开课、游戏中的世界聊天等海量用户在一个群里互动的场合,也提供了可用来实现应用内的公众号、服务号的「系统对话」,还有专为客服系统准备的「临时对话」。通过提炼不同场景的共通需求,我们提供了功能各异但接口 一致的解决方案。
- 用户之间可以发送多种多样的消息,如文本、图片、语音、音视频、地理位置等,也可以发送 二进制消息,以及更多的应用层自定义消息。
- 聊天消息自动保存在云端,支持各种复杂的查找和翻页方式。
-
特殊的消息收发需求。除了普通的消息收发之外,我们还支持:
- 带有提醒功能的 @ 消息(如微信里面的 @ 某人)
- 消息的 撤回和修改
- 消息送达和对方已读的 回执通知
- 群聊里面为了避免过于干扰,允许用户开启 消息免打扰 开关
- 发送譬如聊天过程中「某某正在输入…」这样的 状态信息
- 在消息接收方离线时,自动转为 推送通知(Push Notification)
- 对于大型的开放聊天室,为了防止重要消息被淹没或丢弃,支持不同 优先级 的发送选项,确保重要的消息能优先、迅速送达客户端
-
多端登录与消息同步
现在一个用户使用多个设备登录已经是比较常见的需求,我们既支持单个账号在多个设备同时登录、即时通讯同步到所有设备,也支持 单点登录,可由业务层自主选择。 移动设备网络不稳定也是常态,聊天过程中用户难免会偶尔掉线,我们的 消息同步机制 可以确保用户消息及时得到同步,重要消息从不丢失。
-
管理与运营支持
对于聊天消息,我们默认提供了 实时过滤敏感内容 的能力,允许各个产品设置自己的敏感词列表,并且也支持开 发者实现自己的敏感词过滤插件,来确保产品运营层面合规合法。
-
安全控制
任何终端用户要开启即时通讯服务,只需要提供一个唯一标识自己的
clientId即可,这种与产品自有账户系统解耦合的方式,带来了集成的便利,也可以促使通讯服务商专注做好底层的「信使」角色。 同时我们也提供 第三方鉴权 的机制,通过在聊天流程中加入开发者服务器签名授权这一环节,来确保通讯操作的安全。 而且,即时通讯 SDK 与云端是 WebSocket 全双工通讯,且全程使用 TLS 安全加密。 -
强大的业务扩展能力
对于很多典型的需求,我们提供了默认的实现,而为了支持业务的多样性和特殊性,我们也提供了丰富的扩展机制:
- 为了和产品自有用户系统进行对接,我们提供了第三方操作鉴权的扩展接口,确保在用户登录、创建/加入/退出对话群组、以及拉取聊天记录时,所有操作都得到了授权。
- 同时我们还支持开发者对消息传递的过程进行 hook 处理,在消息到达云端但是还没有投递之前和投递之后,分别完成自定义的处理逻辑,例如过滤掉竞品的品牌,以及自定义离线推送消息,等等。
- 我们也支持通过简单的 web hook 来完成云端和应用后端的消息同步。
- 在提供移动端的 SDK 之外,我们还提供了 REST API,以帮助产品在可信环境下更好地实现业务处理。
我们相信灵活性和扩展性也是云服务的核心竞争力。