나에게 해 주는 일
- 메시지와 반응이 상대방 휴대폰과 나의 다른 기기에 곧바로 나타납니다.
- 오프라인이었던 휴대폰도 다시 연결되면 빠짐없이 따라잡습니다.
작동 방식
각 앱은 서버와 인증된 WebSocket 연결을 하나 열어 둡니다. 메시지를 보내면 서버는 먼저 데이터베이스에 기록한 뒤에야 이벤트를 발행합니다. 여러 서버 프로세스가 나란히 실행되며 공유 발행/구독 채널로 이벤트를 주고받으므로, 받는 사람의 연결을 가진 프로세스가 메시지를 전달합니다.
받는 사람이 오프라인이면 푸시 알림이 휴대폰을 깨우고, 앱은 다시 연결될 때 재생 로그에서 밀린 메시지를 받습니다. 종단간 암호화된 채팅에서는 이 모든 과정을 서버가 읽을 수 없는 암호화된 봉투가 지나갑니다.
사용하는 기술
WebSocket · Node.js · TypeScript · PostgreSQL · Redis
자주 묻는 질문
연결 없이 메시지를 보내면 어떻게 되나요?
연결이 돌아오면 앱이 보냅니다. 서버가 받으면 누구에게 알리기 전에 먼저 저장합니다.
서버는 암호화된 메시지를 얼마나 보관하나요?
받는 사람의 모든 휴대폰이 사본을 받을 때까지, 최대 30일입니다.