浏览器跨 Tab 窗口通信原理

前言

原文地址:浏览器跨 Tab 窗口通信原理及应用实践

作者是Chokcoco 一位css大牛。之前就从大佬的文章中学到了不少东西,最近大佬写了篇 浏览器跨 Tab 窗口通信原理及应用实践 感觉挺有意思的,自己打算学习记录一下。

文章中提出了三种方式,这里只学习第一种方式:Broadcast Channel

Broadcast Channel

Broadcast Channel是一种用于发送消息给多个订阅者的通信机制,在Web开发中常用于实现实时通信和消息推送功能。通过Broadcast Channel,一个消息可以同时传递给多个订阅者,而不需要它们之间直接建立连接。这种方式可以减少网络负载和提高效率,适用于需要将同一消息发送给多个客户端的场景。

在Web开发中,Broadcast Channel通常结合WebSockets或者Service Workers等技术一起使用,以实现实时通信和消息推送。开发者可以使用Broadcast Channel API来创建一个频道,并向其中发送消息,所有订阅了该频道的客户端都会接收到这些消息。这种方式可以方便地实现聊天室、实时数据更新等功能。

需要注意的地方是:Broadcast Channel 遵循浏览器的同源策略。这意味着只有在同一个协议、主机和端口下的窗口才能正常进行通信。如果窗口不满足同源策略,将无法互相发送和接收消息。

<template>
  <div class="box">
    <div>sum的值是:{{ sum }}</div>
    <el-button type="primary" ="addFn">1</el-button>
  </div>
</template>

<script setup lang="ts">
import { ref, onMounted } from "vue";
const sum = ref(0);
let broadcastChannel;

onMounted(() => {
  createBroadcastChannel();
});

// 创建BroadcastChannel 对象
const createBroadcastChannel = () => {
  broadcastChannel = new BroadcastChannel("test");
  // 监听消息
  broadcastChannel.onmessage = (e) => {
    console.log(e);
    if (e.currentTarget.name == "test") {
      // 更新数据
      sum.value = e.data.data;
    }
  };
};

// 发送消息
const sendMsg = (data) => {
  broadcastChannel.postMessage({
    data: data,
  });
};

const addFn = () => {
  sum.value += 1;
  // 发消息,同步信息
  sendMsg(sum.value);
};
</script>

效果图
在这里插入图片描述
应用
关于应用的话,暂时没遇到过。不过可以当一个知识储备。

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无知的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值