const channel = new BroadcastChannel('app-channel');
channel.addEventListener("message", (event) => {
console.log("다른 탭에서 받은 데이터 :", event.data);
});
channel.postMessage({
type: 'HELLO',
message: '안녕하세요'
});const channel = new BroadcastChannel('user-events');
channel.postMessage({
type: 'USER_UPDATED',
user: {
id: 1,
name: '홍길동',
roles: ["user", "editor"],
},
updatedAt: new Date(),
});const authChannel = new BroadcastChannel('auth');
function logout() {
localStorage.removeItem('accessToken');
authChannel.postMessage({
type: 'LOGOUT'
});
window.location.href = '/login';
}
authChannel.addEventListener('message', (event) => {
if (event.data.type !== 'logout') return;
localStorage.removeItem('accessToken');
window.location.href = '/login');
});window.addEventListener('storage', (event) => {
if (event.key === 'theme') {
document.documentElement.dataset.theme = evet.newValue;
}
});
function changeTheme(theme) {
localStorage.setItem('theme', theme);
document.documentElement.dataset.theme = theme;
});