nextjs
BroadcastChannel 을 사용하여 브라우저 탭간의 데이터 공유

BroadcastChannel 을 사용하여 브라우저 탭간의 데이터 공유

프론트 개발을 하다보면 켜져있는 브라우저 탭간에 데이터를 공유해야할 경우가 발생한다

그때 BroadcastChannel 을 통하여 공유하는 방법을 알아보자

예시

www.woosub.com 이라는 사이트를 만들었고 상단 네비게이션 바 (상단바)가 존재한다고 가정하자

해당 사이트를 접속한 탭 a,b,c 세개가 떠있을 때

하나의 탭에서 상단바 를 숨김 처리하면, 나머지 탭에서도 동일하게 상단바를 숨기고 싶다

이때 BroadcastChannel 을 이용하여 해결할 수 있다

example.tsx
 
interface UiStateMessage {
    isHidden : boolean
}
 
export default function topnav() {
 
    const [isHidden, setIsHidden] = useState<boolean>(false);
 
    const channelName = 'ui-state-channel'; // 고유한 채널명 지정
    const uiStateChannel = new BroadcastChannel(channelName); // 채널 생성
 
    uiStateChannel.postMessage({ isHidden: isHidden}); // 채널을 수신하고 있는 모든 탭에 메세지 전송
 
    uiStateChannel.onmessage = (event) => { // 메세지 수신
        const receivedMessage = event.data as UiStateMessage;
    }
}