它为你做了什么
- 消息和表情回应会立即出现在对方手机和你的其他设备上。
- 离线的手机重新上线后会补收所有消息,不留空缺。
如何运作
每个应用都与服务器保持一条经过认证的 WebSocket 连接。你发送消息时,服务器先把它写入数据库,然后才发布事件。多个服务器进程并行运行,通过共享的发布/订阅通道相互传递事件,因此哪个进程持有接收方的连接,就由哪个进程投递。
如果接收方离线,推送通知会唤醒他的手机,应用重新连接时会从重放日志中补收。在端到端加密的聊天中,这整个过程中传递的是服务器无法读取的加密信封。
底层技术
WebSocket · Node.js · TypeScript · PostgreSQL · Redis
常见问题
没有网络时发送消息会怎样?
网络恢复后应用会自动发送。服务器一收到,就会在通知任何人之前先保存。
服务器会保存加密消息多久?
直到接收方的每部手机都收到副本为止,最长 30 天。