실시간 업데이트는 서버에서 확장 프로그램 설치로 직접 연결되는 즉각적인 통신 경로를 제공합니다. 이벤트가 발생하면 데이터를 주고받을 수 있습니다. 인스턴트 메시지, 백그라운드 작업 트리거, 기기 데이터 동기화 등 다양한 최신 서비스에서 중요한 작업입니다. Chrome 확장 프로그램에서 실시간 통신을 할 수 있는 옵션은 여러 가지가 있습니다.
- 웹 푸시 또는 푸시 API는 Chrome 확장 프로그램에서 모든 푸시 제공업체 또는 자체 웹 서버를 사용하여 메시지를 보내고 받을 수 있는 웹 표준입니다.
- chrome.gcm은 Firebase 클라우드 메시징을 사용하여 메시지를 보내고 받을 수 있는 기존 확장 프로그램 전용 API입니다.
- WebSockets는 Chrome 확장 프로그램과 서버 간의 양방향 연결을 열 수 있는 하위 수준 프로토콜입니다.
일반적인 시나리오
다음은 실시간 통신이 중요한 Chrome 확장 프로그램의 일반적인 시나리오입니다.
사용자에게 변경사항을 알립니다.
여러 사용자 간에 파일, 설정 또는 기타 정보를 동기화하는 경우 웹 푸시는 확장 프로그램에 자동 업데이트를 전송하여 서버에서 상태를 업데이트하도록 알리는 완벽한 방법입니다.
사용자가 버그나 문제를 신고할 수 있도록 허용하고 있나요? 푸시 제공업체와 통합하여 확장 프로그램에서 직접 공유할 업데이트가 있는 즉시 알릴 수 있습니다.
사용자에게 알림을 보냅니다.
완전히 클라이언트 측에서 알림을 보낼 수 있지만, 알림을 보낼 대상, 내용, 위치, 시기에 관한 서버 측 로직이 있는 경우 웹 푸시가 가장 미래 지향적인 옵션입니다.
일부 사용자에게만 메시지를 보내는 경우 푸시가 가장 적합합니다.
Firebase 클라우드 메시징은 주제 (채널이라고도 함)를 제공하지만 HTTP 클라우드 메시징 API에서만 사용할 수 있습니다. 이는 chrome.gcm에서 사용하는 기존 버전과 다릅니다. Chrome 121 이전 버전의 Chrome 사용자를 비롯한 모든 사용자에게 광범위한 메시지를 보내려면 chrome.gcm가 이상적인 옵션입니다. chrome.gcm는 기존 Firebase 메시지 API를 기반으로 하며 10년 이상 Chrome에서 지원되었습니다.
웹 푸시 또는 chrome.gcm를 사용하여 새 메시지가 도착하거나 파일이 공유되는 등 계정에 중요한 일이 발생할 때 사용자에게 알림을 보낼 수 있습니다.
채팅
양방향 통신이 자주 필요하신가요? 이 경우 웹 소켓이 가장 적합한 옵션일 수 있습니다. 확장 프로그램과 서버 (또는 다른 사용자에게 직접) 간에 양방향 연결을 엽니다. 이를 통해 데이터를 실시간으로 교환하고 메시지를 주고받을 수 있습니다. 일반적으로 웹에서 훌륭한 옵션이지만, 이를 사용하려는 경우 확장 프로그램에 몇 가지 제한사항이 있다는 점을 염두에 두어야 합니다.
이 가이드의 나머지 부분에서는 사용 가능한 옵션을 자세히 살펴보겠습니다.
푸시 API를 사용한 푸시 알림
Push API를 사용하면 모든 푸시 프로바이더를 사용하여 푸시 알림과 메시지를 보낼 수 있습니다. 푸시 API의 푸시는 수신되는 즉시 서비스 워커에 의해 처리됩니다. 확장 프로그램이 정지된 경우 푸시를 통해 다시 활성화할 수 있습니다. 확장 프로그램에서 사용하는 프로세스는 개방형 웹에서 사용하는 프로세스와 정확히 동일합니다.
chrome.gcm을 사용한 푸시 알림
chrome.gcm API는 웹 애플리케이션과 모바일 앱에 실시간 업데이트를 전송하는 서비스인 Firebase 클라우드 메시징 (FCM)에 직접 연결을 제공합니다. 이는 브라우저에서 푸시를 사용할 수 있기 몇 년 전에 추가된 Chrome 전용 확장 프로그램 API입니다. Firebase(현재 지원 중단됨)의 기존 HTTP API를 사용하여 빌드되었습니다. 이러한 API는 다른 곳에서는 지원이 중단되지만 확장 프로그램에서는 지원이 중단되지 않습니다. 이러한 API는 당분간 계속 작동합니다. 하지만 기존 푸시 백엔드이므로 주제와 같은 기능이 없습니다.
FCM 백엔드 서비스는 Chrome에서 사용자에게 알림을 전송하는 데 필수이지만 메시지를 전송하기 위해 chrome.gcm를 사용할 필요는 없습니다.
모든 푸시 제공업체는 웹 푸시를 사용하여 Firebase 계정으로 메시지와 이벤트를 보내고 받을 수 있습니다. 이 API는 여전히 완전히 지원되는 Chrome 확장 프로그램 API이지만, 이 API와 같은 확장 프로그램 전용 API보다는 Push API와 같은 웹 표준을 사용하는 것이 좋습니다. chrome.gcm이 사용 사례에 가장 적합한 경우 처음부터 chrome.gcm을 설정하는 방법에 관한 자세한 방법이 있습니다.
WebSocket을 사용한 실시간 메시지
WebSockets은 10년 넘게 웹에서 실시간 메시지의 핵심이었습니다. 웹에서 실시간 이벤트에 가장 많이 사용되는 옵션으로, 지속적인 양방향 대화를 제공합니다. WebSocket은 콘텐츠 스크립트, 팝업, 측면 패널, 백그라운드 서비스 워커 등 다양한 확장 프로그램 구성요소에서 작동합니다. 일반적으로 웹에서 좋은 옵션이지만, 이를 사용할 계획이라면 확장 프로그램에 몇 가지 제한사항이 있다는 점을 염두에 두어야 합니다.
푸시 알림에 적합하지 않음
WebSocket은 확장 프로그램 플랫폼 API(예: chrome.gcm)를 사용하는 대신 웹 플랫폼에서 실행되므로 WebSocket 연결이 확장 프로그램 외부에서 시작될 때 Chrome에서 확장 프로그램을 절전 모드에서 해제할 방법이 없습니다.
활성 연결만
Chrome은 30초 후에 사용되지 않는 확장 프로그램을 일시중단합니다. Chrome에서는 확장 프로그램이 '사용 중'인지 확인하기 위해 여러 휴리스틱을 사용하며 그중 하나가 활성 WebSocket 연결입니다. 지난 30초 동안 WebSocket 메시지를 전송하거나 수신한 확장 프로그램은 Chrome에서 일시중지하지 않습니다. 확장 프로그램에서 WebSocket을 사용하고 조기에 닫히지 않도록 해야 하는 경우 하트비트 메시지를 전송하여 연결을 유지할 수 있습니다. 여기에는 서버에 주기적으로 메시지를 보내 서버와 Chrome에 사용자가 아직 활성 상태임을 알리는 작업이 포함됩니다. WebSocket을 무기한으로 유지하는 방법의 예는 WebSocket 문서에서 확인할 수 있습니다.