它為你做了什麼
- 訊息和表情回應會立即出現在對方手機和你的其他裝置上。
- 離線的手機重新上線後會補收所有訊息,不留空缺。
如何運作
每個應用程式都與伺服器保持一條经過認证的 WebSocket 連接。你傳送訊息時,伺服器先把它寫入資料庫,然後才發布事件。多個伺服器進程并行運行,通過共享的發布/訂閱通道相互傳递事件,因此哪個進程持有接收方的連接,就由哪個進程投递。
如果接收方離線,推送通知會唤醒他的手機,應用程式重新連接時會從重放日志中補收。在端對端加密的聊天中,这整個過程中傳递的是伺服器無法讀取的加密信封。
底層技術
WebSocket · Node.js · TypeScript · PostgreSQL · Redis
常見問題
沒有網路時傳送訊息會怎樣?
網路恢複後應用程式會自動傳送。伺服器一收到,就會在通知任何人之前先保存。
伺服器會保存加密訊息多久?
直到接收方的每部手機都收到副本為止,最长 30 天。