LeanMessage
即时通讯
即时通讯服务的客户端与云端之间经由一条长链接实时收发消息,聊天记录保存在云端,可以随时翻查。单聊、群聊、不限人数的聊天室和公众号式的系统对话都归结为「对话」这一个概念。
即时通讯与 LeanCloud 的其他服务紧密配合:对话存在数据存储里,可以像普通数据一样查询;服务端 Hook 用云引擎编写,能介入消息投递的各个环节;收件人不在线时,消息交给消息推送送达。
功能
对话
单聊、群聊、不限人数的聊天室、公众号式的系统对话和客服用的临时对话都是一种「对话」,接口一致。对话可以添加自定义属性并按条件查询。
消息
文本、图片、语音、视频、位置和二进制消息都可以发送,也可以自己扩展消息类型。消息发出之后还能撤回和修改,可以提及某人,发送方能收到送达和已读回执。
聊天记录与多端登录
消息保存在云端,可以从任意时刻往前翻页查询。同一个用户可以在多个设备上同时登录,消息同步到每一处,也可以限制成只在一处登录。
离线推送
收件人不在线时,消息转为推送通知送达,推送的内容和对象都可以自己指定。
权限与内容管理
登录、加入对话和查询聊天记录都可以交给开发者自己的服务端签名授权。聊天室可以设管理员、踢人和禁言,聊天内容可以按应用自己的词表实时过滤。
Hook 与 REST API
对话的创建与成员变动、消息投递的前后、客户端的上下线都可以触发云函数。服务端也可以用 REST API 发消息、查记录和管理对话。
优势和特色
功能全面,接口灵活
提供对话黑名单、敏感词等管理功能,支持公众号、客服号等特定对话形态,更有可编程消息 Hook 机制可灵活满足各类业务需求。
稳定可靠
已稳定服务数万开发团队,支撑日活千万的产品,99.9% 的可用性承诺。支持消息下发峰值超过 1.2 亿条 / 分钟,完美应对高并发和爆发式活动推广。
精准对接
客户端 SDK 与 demo 代码完全开源;研发工程师直接回复工单和社区提问,7x24 小时紧急状态电话支持。
SDK 支持
客户端 SDK 覆盖这些语言和平台,服务端另有 REST API。
JavaScript
浏览器 · Node.js · 小程序
Objective-C
iOS · macOS · tvOS · watchOS
Swift
iOS · macOS · tvOS · watchOS
Java
Android · 服务端
C#
.NET · Unity
Flutter
iOS · Android
技术介绍
客户端与云端之间是一条 WebSocket 长连接,设备并不固定连往某一台服务器:登录时先向 Router 询问,由它按各台长连接服务器的实时负载分配一台。普通消息保证至少送达一次,重复的部分由 SDK 去重。
服务端分为多个组件,各自独立部署:长连接服务器维持设备的连接,Router 负责分配,推送服务处理订阅关系并触发推送,WatchDog 从各台服务器收集运行和统计数据,遇到异常发起报警。对话是数据存储 _Conversation 表里的一条记录,消息记录则存在 HBase 上。
长连接服务器支持线性扩展。服务发现基于 Slacker Cluster 和 ZooKeeper:每个实例把自己提供的服务注册成 ZooKeeper 上的临时节点;调用方监听自己依赖的节点,可以在部署后自动发现新的节点。Router 也通过这套机制轮询在线的长连接服务器,掌握它们的负载。
价格方案
以中国节点的价格为例。开发版有免费额度,商用版按用量计费,另有企业版需商务洽谈。
| 开发版 | 商用版 | |
|---|---|---|
| 登录用户数 | 免费 500 人 / 天 | 15 元 / 万人 / 天 |
| REST API 请求 | 免费 3 万次 / 天,与数据存储、消息推送等服务共享额度 | 1.0 元 / 万次 |
| 聊天记录保存时间 | 免费 6 个月 | 6 个月,可延长至最长 3 年,1500 元 / 月 |
| 成员角色与权限管理 | 不支持 | 70 元 / 天 |
| 黑名单 | 不支持 | 70 元 / 天 |
更新历史
2020.08.07
2020.03.17
Flutter 支持即时通讯
Flutter 应用可以使用即时通讯。SDK 以插件形式开发,底层调用 Swift SDK 和 Java Unified SDK,以便使用系统层面的能力。
2020.01.03
2020.01.03
2019.12.04
2019.10.09
2019.04.08
Swift SDK 支持即时通讯
Swift SDK 加入即时通讯,iOS 应用用 Swift 就可以收发消息,不必再经由 Objective-C SDK。
2017.04.28
2016.11.04
2016.09.23
LiveKit 发布
把直播、文字聊天、弹幕和送礼的界面做成一套开源 UI 套件,视频流由七牛提供,聊天由实时通信提供,开发者可以在它的基础上二次开发。
2016.09.23
2016.08.05
2016.06.07
2016.05.05
2016.02.03
2015.11.03
2015.09.01
2015.09.01
2015.04.28
2015.03.20
实时通信 2.0 发布
单聊、群聊和开放聊天室统一为「对话」,每个对话对应数据存储
_Conversation表里的一条记录,可以添加自定义属性并按条件查询。支持任意查询对话历史记录,同时提供富媒体消息类型,也可以自定义消息类型。2015.01.12
推出消息 Hook
两个云函数挂在消息投递的流程上:
_messageReceived在消息存入离线队列之前触发,可以改写内容、改收件人列表,或者直接丢弃;_receiversOffline在离线通知发出之前触发,可以决定推送的内容和对象,或者跳过推送改用短信、邮件。2014.11.24
2014.10.14
2014.08.19
2014.08.04
2014.06.27
实时通信服务发布
在推送的长连接上增加了上行通道,客户端与服务端之间由此可以双向收发数据。第一版只提供底层接口:点对点收发数据、上下线通知和权限认证,聊天记录和会话管理由应用自己安排。鉴权通过签名完成,因此接入的应用不必使用数据存储。
数据来源
功能介绍与价格参考了 LeanCloud 官网的 即时通讯产品页 和 开发文档;「优势和特色」段落原文摘录自官网。技术介绍参考了 实时通信服务架构:微服务和服务发现 一文。
更新历史整理自 LeanCloud Blog 的产品更新汇总、月度通讯和单独发布的公告。