Mercure - WebSocket을 대체 가능한 SSE(Server Sent Events)기반 실시간 통신 솔루션
(github.com/dunglas)- 쉽고, 빠르고, 안정적이며, 배터리 효율이 좋은 개방형 솔루션
- 웹 브라우저 및 기타 HTTP 클라이언트에 데이터 업데이트를 푸시
- 특히 웹 API를 통해 제공되는 리소스의 비동기/실시간 업데이트를 반응형 웹과 모바일 앱에서 표시하는 데 유용
- 순수 HTTP 기반 : HTTP/2 이상의 프로토콜을 활용하여 양방향 통신 지원
- 빠른 응답 시간과 낮은 지연
- 별도 설치 없이 모든 환경에서 브라우저 호환성 제공
- 간단한 발행 및 구독
- 발행(Publish): 단순 POST 요청으로 처리
- 구독(Subscribe): Server-Sent-Events(SSE)를 통해 실시간 업데이트 수신
- 연결이 끊어질 경우 자동 재연결 및 누락된 메시지 재요청 지원
- RESTful API 및 GraphQL을 위한 설계
- JWT 인증을 통한 프라이빗 업데이트 제공
- 사용자의 접속 상태를 확인할 수 있는 Presence API 제공. 구독 및 이벤트 상태 추적 가능
- 이벤트 스토어: 발생한 이벤트를 저장 및 관리 가능
- PHP 및 기타 서버리스 아키텍처와 호환
- 데이터의 완전한 보안을 위한 E2EE(End-to-End Encryption) 제공
- 프로덕션에서 사용가능한 수준의 Mercure Hub 레퍼런스 구현체 제공
- 모든 Go 애플리케이션에서 허브 없이 직접 Mercure 프로토콜을 구현하는 데 사용할 수 있는 라이브러리와 공식 Docker 이미지가 함께 제공
같은 분이 만드신 FrankenPHP에 Mercure 구현체가 내장되어 있습니다.
https://news.hada.io/topic?id=15103
리얼타임 허브를 제공한다는 측면에서 대체제가 될 수 있는 Pushpin도 있습니다.
https://news.hada.io/topic?id=11377
Mercure보다 Pushpin이 더 직관적이라(ㅎㅎ... Mercure 문서 읽어보기가 너무 귀찮았습니다) 이전엔 Pushpin을 사용해 사이드 프로젝트를 진행했지만, 다음엔 이 친구를 사용해보고 싶네요.