# Mercure - WebSocket을 대체 가능한 SSE(Server Sent Events)기반 실시간 통신 솔루션

> Clean Markdown view of GeekNews topic #18588. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18588](https://news.hada.io/topic?id=18588)
- GeekNews Markdown: [https://news.hada.io/topic/18588.md](https://news.hada.io/topic/18588.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-01-06T09:53:22+09:00
- Updated: 2025-01-06T09:53:22+09:00
- Original source: [github.com/dunglas](https://github.com/dunglas/mercure)
- Points: 25
- Comments: 2

## Summary

Mercure는 웹 브라우저 및 기타 HTTP 클라이언트에 데이터 업데이트를 푸시하는 SSE 기반의 실시간 통신 솔루션으로, 빠른 응답 시간과 낮은 지연을 제공하며, HTTP/2 이상의 프로토콜을 활용하여 양방향 통신을 지원합니다. 이 솔루션은 간단한 발행 및 구독 메커니즘을 통해 실시간 업데이트를 제공하며, 자동 재연결 및 누락된 메시지 재요청 기능을 지원합니다. JWT 인증을 통한 프라이빗 업데이트, Presence API를 통한 접속 상태 확인, E2EE를 통한 데이터 보안 등 다양한 기능을 제공하며, PHP 및 서버리스 아키텍처와 호환됩니다.

## Topic Body

- 쉽고, 빠르고, 안정적이며, 배터리 효율이 좋은 개방형 솔루션  
- 웹 브라우저 및 기타 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 이미지가 함께 제공

## Comments



### Comment 33048

- Author: jhj0517
- Created: 2025-01-06T18:00:25+09:00
- Points: 1

SSE 기반이라면 단방향 통신인지, 아니면 웹소켓 처럼 양방향 통신을 지원하는지 궁금하네요! 😮  
일단 나름대로 찾아본 걸로는 단방향 통신(서버->클라)만 지원하는 것 같긴한데... 🥺  
https://medium.com/@sirajul.anik/server-sent-events-with-mercure-in-laravel-lumen-14ddc41d3f15

### Comment 33031

- Author: nemorize
- Created: 2025-01-06T10:57:02+09:00
- Points: 3

같은 분이 만드신 FrankenPHP에 Mercure 구현체가 내장되어 있습니다.  
https://news.hada.io/topic?id=15103  
  
리얼타임 허브를 제공한다는 측면에서 대체제가 될 수 있는 Pushpin도 있습니다.  
https://news.hada.io/topic?id=11377  
  
Mercure보다 Pushpin이 더 직관적이라(ㅎㅎ... Mercure 문서 읽어보기가 너무 귀찮았습니다) 이전엔 Pushpin을 사용해 사이드 프로젝트를 진행했지만, 다음엔 이 친구를 사용해보고 싶네요.
