Broadcast Channel API를 알아보자

쭌로그·2025년 7월 13일

서론

사내 AI 프로젝트를 고도화하던 중, 답변을 클릭하여 모달이 아닌 새로운 탭창에서 그래프를 보여줘야하는 로직이 있었습니다. 실시간으로 변하는 데이터를 탭에 전송해야 했기에 여러 방법을 찾아보았습니다.
그러던 중 window.postmessageBroadcastChannel API를 알게 되었고, BroadcastChannel API를 사용하게 되었습니다. 오늘은 BroadcastChannel API의 간단한 사용법을 정리해보겠습니다.

1. Broadcast Channel API란?

Broadcast Channel API는 브라우징 맥락들 (예: 창, 탭, 프레임, iframe)과 동일한 출처에 있는 워커들 간의 기본적인 통신을 허용합니다.
출처 MDN

Broadcast Channel API는 웹 애플리케이션에서 동일한 출처(SOP)내의 탭, 윈도우, iFrame, Web Worker 간의 데이터를 실시간으로 교환할 수 있도록 지원하는 기능입니다. BroadcastChannel를 활용하여 채널을 등록, 데이터 수신/송신 메서드를 등록하여 실시간으로 데이터를 업데이트 할 수 있습니다.

MDN

2.Broadcast Channel API 사용법

기본적인 사용법은 new BroadcastChannel('채널명') 을 통해 생성하여 postMessage, onmessage 메서드를 활용하여 데이터를 송/수신 할 수 있습니다.

// channel 생성
const someChannel = new BroadcastChannel('some-channel');

// 데이터 송신
someChannel.postMessage(JSON.stringify({a: 'b'}));

// 데이터 수신
someChannel.onmessage = (event) => {
    const data = JSON.parse(event.data);
};

// 채널 닫기
someChannel.close();

3. window.postMessage와 BroadcastChannel API

window.postMessageBroadcastChannel API는 SOP에서 차이점이 있습니다. window.postMessage는 다른 출처에서도 데이터의 송/수신이 가능하지만 특정 iframe 윈도우 내에서만 데이터의 교환이 가능하도록 설계되었습니다.
이에 반해, BroadcastChannel API는 SOP를 만족하는 모든 브라우저 탭 간의 데이터를 공유할 수 있도록 설계되었습니다.

저의 경우 같은 도매인 내의 여러 탭에 데이터를 전송해야했기에 BroadcastChannel API를 사용하였습니다.

결론

BroadcastChannel API는 여러 탭 간의 데이터의 동기화가 필요할 때, 사용할 수 있는 유용한 API입니다. BroadcastChannel API도 Web worker와 같이 close 메소드를 사용하여 적절한 시점에 닫아주는 것이 필요합니다. 다음 시간에는 mock 데이터를 통해서 실시간으로 데이터를 송/수신하는 로직을 만들어보겠습니다!

참고

MDN(BroadcastChannel API)
BroadcastChannel API란?

profile
매일 발전하는 프론트엔드 개발자

0개의 댓글