확장 프로그램의 실시간 업데이트

실시간 업데이트는 서버에서 확장 프로그램 설치로 직접 연결되는 즉각적인 통신 경로를 제공합니다. 이벤트가 발생하면 데이터를 주고받을 수 있습니다. 채팅 메시지를 사용하든, 백그라운드 작업을 트리거하든, 기기 데이터를 동기화하든, 다양한 최신 서비스에서 매우 중요한 작업입니다. Chrome 확장 프로그램에는 실시간 커뮤니케이션이 가능한 여러 옵션이 있습니다

  • 웹 푸시 또는 Push API는 푸시 제공업체의 Chrome 확장 프로그램에서 또는 자체 웹 서버에서 메시지를 주고받을 수 있는 웹 표준입니다.
  • chrome.gcm은 Firebase 클라우드 메시징을 사용하여 메시지를 보내고 받을 수 있는 기존 확장 프로그램 전용 API입니다.
  • WebSockets는 Chrome 확장 프로그램과 서버 간의 양방향 연결을 열 수 있는 하위 수준 프로토콜입니다.

일반적인 시나리오

다음은 실시간 통신이 중요한 Chrome 확장 프로그램에서 몇 가지 일반적인 시나리오입니다.

변경사항을 통해 사용자에게 최신 정보를 제공하세요.

여러 사용자 간에 파일, 설정 또는 기타 정보를 동기화하는 경우 웹 푸시는 확장 프로그램에 자동 업데이트를 전송하여 서버에서 상태를 업데이트하도록 알리는 가장 좋은 방법입니다.

사용자가 버그나 문제를 신고하도록 허용하나요? 푸시 제공업체와 통합하여 공유할 업데이트가 있는 즉시 확장 프로그램에서 직접 알릴 수 있습니다.

사용자에게 알림을 보냅니다.

알림을 완전히 클라이언트 측으로 보낼 수도 있지만 알림을 보낼 사람, 대상, 위치 또는 시점에 관한 서버 측 로직이 있다면 웹 푸시보다 미래에 대비할 수 있는 가장 좋은 옵션입니다.

일부 사용자에게만 메시지를 보내려면 푸시가 가장 좋은 방법입니다. Firebase 클라우드 메시징은 채널이라고도 하는 Topics를 제공하지만 HTTP Cloud Messaging API에서만 사용할 수 있습니다. 이는 chrome.gcm에서 사용하는 기존 버전과 다릅니다. 기존 버전의 Chrome (Chrome 121 이전) 사용자를 비롯한 모든 사용자에게 광범위한 메시지를 보내려면 chrome.gcm를 사용하는 것이 좋습니다. 기존 Firebase 메시지 API를 기반으로 빌드된 chrome.gcm는 10년 이상 Chrome에서 지원되었습니다.

웹 푸시 또는 chrome.gcm를 사용하여 새 메시지가 도착하거나 파일이 공유될 때와 같이 계정에 중요한 활동이 발생할 때 사용자에게 알림을 보낼 수 있습니다.

채팅

양방향 커뮤니케이션이 자주 필요한 경우 그렇다면 웹 소켓이 가장 적합한 옵션이 될 수 있습니다. 확장 프로그램과 서버 간에 (또는 다른 사용자와 직접) 양방향 연결이 열립니다. 실시간으로 데이터와 메시지를 교환할 수 있습니다. 일반적으로 웹에서 훌륭한 옵션이지만 확장 프로그램을 사용할 계획이라면 확장 프로그램에 관한 몇 가지 제한사항을 염두에 두어야 합니다.

이 가이드의 나머지 부분에서는 사용 가능한 옵션에 대해 자세히 살펴보겠습니다.

Push API를 통한 푸시 알림

Push API를 사용하면 푸시 제공자를 통해 푸시 알림과 메시지를 보낼 수 있습니다. Push API의 푸시는 수신 즉시 서비스 워커에서 처리합니다. 확장 프로그램이 정지된 경우 푸시를 실행하면 확장 프로그램이 다시 활성화됩니다. 확장 프로그램에서 사용하는 프로세스는 오픈 웹에서 사용하는 프로세스와 동일합니다.

chrome.gcm을 통한 푸시 알림

chrome.gcm API는 웹 애플리케이션 및 모바일 앱에 실시간 업데이트를 전송하는 서비스인 Firebase 클라우드 메시징 (FCM)에 직접 연결할 수 있습니다. 이 API는 브라우저에서 푸시가 제공되기 수년 전에 추가된 Chrome 전용 확장 프로그램 API입니다. 이 API는 Firebase(현재는 지원 중단됨)의 기존 HTTP API를 사용하여 빌드되었습니다. 이러한 API는 다른 곳에서 지원 중단되었지만 확장 프로그램에서는 지원 중단되지 않습니다. 가까운 미래에 계속 작동할 것입니다. 하지만 이는 기존 푸시 백엔드이므로 Topics와 같은 기능이 없습니다.

FCM 백엔드 서비스는 알림을 Chrome 사용자에게 전달하기 위한 까다로운 요구사항이지만 chrome.gcm를 사용하여 메시지를 보낼 필요는 없습니다. 모든 푸시 제공업체는 웹 푸시를 사용하여 Firebase 계정으로 메시지와 이벤트를 주고받을 수 있습니다. 이 API는 여전히 완벽하게 지원되는 Chrome Extension API이지만, 이와 같은 확장 프로그램 관련 웹 표준보다 Push API와 같은 웹 표준을 사용하는 것이 좋습니다. 사용 사례가 chrome.gcm으로 가장 적합하다면 chrome.gcm을 처음부터 설정하는 방법에 관한 자세한 방법을 참고하세요.

WebSocket을 사용한 실시간 메시지

WebSockets은 10년 이상 웹에서 실시간 메시징의 초석이 되었습니다. 웹에서 실시간 이벤트에 많이 사용되는 옵션이며 지속적인 양방향 대화를 제공합니다. WebSocket은 콘텐츠 스크립트, 팝업, 사이드 패널, 백그라운드 서비스 워커 등의 다양한 확장 프로그램 구성요소에서 작동합니다. 일반적으로 웹에서 훌륭한 옵션이지만 확장 프로그램을 사용할 계획이라면 몇 가지 제한사항에 유의해야 합니다.

푸시 알림에 적합하지 않음

WebSocket은 chrome.gcm와 같은 확장 프로그램 플랫폼 API를 사용하는 대신 웹 플랫폼에서 실행됩니다. WebSocket 연결이 확장 프로그램 외부에서 시작되면 Chrome은 확장 프로그램의 절전 모드를 해제할 방법이 없습니다.

활성 연결만

Chrome은 30초 후에 사용되지 않는 확장 프로그램을 정지합니다. 여러 휴리스틱이 Chrome에 적용되어 확장 프로그램이 '사용 중'인지 확인합니다. 그 중 하나가 활성 WebSocket 연결입니다. Chrome은 지난 30초 동안 WebSocket 메시지를 보내거나 받은 확장 프로그램을 정지하지 않습니다. 확장 프로그램에서 WebSocket을 사용 중이며 너무 일찍 닫히지 않도록 해야 하는 경우 하트비트 메시지를 보내 연결을 유지할 수 있습니다. 이를 위해서는 서버에 정기적으로 메시지를 전송하여 서버와 Chrome에 사용자가 여전히 활성 상태임을 알려야 합니다. WebSocket을 무기한으로 활성 상태로 유지하는 방법의 예는 WebSocket 문서에서 확인할 수 있습니다.