@blockcast/window-multicast-bridge

中文文档
0.6.0发布于 2026/11/05MITES Module零依赖构建来源已验证近 30 天下载 3202

浏览器 MESC 多元填充,可以发现本地 Blockcast 桥并安装窗口. 通过Web Transport进行多播.

中文使用文档
文档目录8 节
  1. 页面拖带协调员
  2. 浏览器页面范围
  3. 连接灯塔( iOS)
  4. 发现边界
  5. 批发包 packets 活动)
  6. 宣布交货 subscription.delivery (中文(简体) )
  7. 建筑和测试
  8. 释放

@blockcast/window-multicast-bridge

浏览器 MESC 多元填充器,可以找到本地的 Blockcast 桥 (Beacon app, an 孤立的Web App或本土的BCDS桥,通过Web Transport与它连接,以及 安装 window.multicast 在页面上.

import { initMulticastBridge } from '@blockcast/window-multicast-bridge';

window.addEventListener('multicast-bridge-ready', () => {
  // window.multicast is installed; resolve it with @blockcast/multicast-browser.
});
initMulticastBridge({ autoStart: true });

包船在 dist/数字 :

导出文件这是什么
.dist/multicast-bridge.js发现,即 BCDS-v1 Web Transport客户端,以及 window.multicast
./bootstrapdist/bridge-bootstrap.js以下描述的页上自带的拖网协调员
./beacon-connectdist/beacon-connect.js以下描述的iOS连接灯塔链接

来源居住在 src/。浏览器直接加载已建模块和捆绑器 它可以作为一个普通的依赖.

页面拖带协调员

src/bridge-bootstrap.js 是canonial的网页协调员. createBridgeBootstrap() 拥有发现之上的地层——能力 诊断、临终状态、有限度的发现预算和复苏——同时 initMulticastBridge() 继续拥有发现, BCDS-v1网络运输 握个手 window.multicast 安装。 它从来没有描述媒体和 从来没有嵌入一个玩家.

任何探测前都要报告能力(probeBridgeCapabilities(): 网络运输支持、安全环境、每个东道方的混合内容可行性、, 和精细的本地网络访问权限。 一个缺失的能力是 有原因的地位(webtransport-unsupported, (中文(简体) ), insecure-context, (中文(简体) ), local-network-denied),从不开放探测回路. 年长者 local-network-access 别名保留信息:它报告 denied 打开 Chromium 建在给予两种优异的许可的地方。 掷出 发射途径是遵守同一合同而不是逃避:终止 与 launch-threw,所以一页 带有敌意 window.multicast 访问器 得到一个倒数而不是一个 checking 状态永远无法解决.

每站可以通过触发器而不是定时器恢复:扩展 准备、 本地网络许可更改、 来源批准 (单位:千美元)originApproved()),或桥接变化. 一个桥上的例子 由于原生桥薄荷a 每次运行时启动时的新证书; 明确的描述符 instanceId 当一个人存在时获胜。 复数以 maxDiscoveryAttempts 财务报告和审定财务报表 maxRetries。 。 。 .

transportPolicy 是荣誉,而不是假设。 仅 auto (和 moq-only,哪个 直接跳过桥)报告 fallback: 'moq-quic',返回页面 到它开始的QUIC/MoQ路径. 下 multicast-only 终端状态 不得倒计时:强迫本土/AMT要求沉默地继续 QUIC 读作多播回放 .

浏览器页面范围

发现 . 财务报告和审定财务报表 ./bootstrap )是一个通用浏览器桥,没有本地的交接或app-assexation 合同:通用链接、App链接、AASA/资产链接文件、 /live* 路线,以及 blockcast.network 主机不是桥梁发现的一部分或 授权。 可选 ./beacon-connect 条目( 下) 构建灯塔 通用链接; 发现和授权从未读过 . initMulticastBridge() 发现本地的 BCDS 桥并可能 安装 window.multicast 在任何浏览器页面上( 包括非 Blockcast) HTTPS 来源, 移动浏览器页面, 或本地开发页面 ; 它没有 检查页面主机或路径名。 发现使用配置的浏览器 桥的源代码,然后直接连接 网易运输. 玩家可以从任何一页导入并武装桥; /live* 浏览器使用不需要.

证书 pinning 不批准 iOS 背景执行: 当 Beacon 是 同分机桥,暂停灯塔 暂停该桥为浏览器. 一个单独的总是运行的局域网网关 独立于电话应用程序 生命周期.

连接灯塔( iOS)

Safari通过Beacon的Safari扩展找到Beacon的桥. 克罗姆, Firefox, Edge等iOS浏览器没有扩展名, WebKit 块 一个 HTTPS 页面的回路 /health 探测器,所以发现无法到达灯塔 他们. ./beacon-connect 给任何一页的一图配对链接 :

<a id="beacon-connect" hidden>Connect Beacon</a>
import { initMulticastBridge } from '@blockcast/window-multicast-bridge';
import { offerBeaconConnect } from '@blockcast/window-multicast-bridge/beacon-connect';

offerBeaconConnect(document.getElementById('beacon-connect'));
initMulticastBridge({ autoStart: true });

该提议遵循了桥梁的窗口事件,所以无论谁建造 在此窗口中带有此软件包的控制器( 0. 4. 0 或 后期): 此页面, createBridgeBootstrap(),或玩家库。 当控制器运行时,每个 过渡 initMulticastBridge()是因为 onStatus 报告也于 window 作为 multicast-bridge-status,与 detail: { phase, ok, reason, fromCache, takeover } 没有终点和针. phase 实值 discovery, (中文(简体) ), connect, (中文(简体) ), disconnect 或者说 extension· ; ok 设置在 discovery 财务报告和审定财务报表 connect· ; reason (单位:千美元)miss 或者说 lock-busy在发现上 老师 事件没有重播, 所以在控制器前创建要约 启动, 或种子 offer.onStatus 自己(同样需要) createBridgeBootstrap()自己的状态, 没有发送 。 链接 显示在发现丢失或连接失败上,所以一个页面已经 配对时从不闪出,而一发一发又能提供. 现予撤回 multicast-bridge-ready。 。 。 .

它只在iOS上提供,超过HTTPS,在顶级页面中提供. 水龙头去 https://www.blockcast.network/beacon/connect,或改为 https://blockcast.network/beacon/connect 从页面上 www。 。 。 . return= chrome, Firefox 或 Edge; 所有其他 iOS 浏览器, 和一个 iPad 浏览器 请求桌面站点而无需其产品代号,则返回到 Safari . to= 指定页面名称,不附带证书或搜索发现字段 逃到RFC 3986, 正如Beacon描述的。 灯塔开通了桥 重新开放 在浏览器的页面 与桥的针 在碎片. initMulticastBridge() 保持针作为配对,所以以后的访问连接 灯塔桥开通时没有水龙头;一个不再连接的接针 再次提供链接。 灯塔使用自己的原产地 to。 。 。 .

iOS 打开灯塔只用于在用户自带时的导航 在顶级框中处理到顶级页面以外的主机. 让控制保持一个真正的链接;帮助者在水龙头内部重建其螺旋. 这个 帮助显示并隐藏它 hidden,所以不要给它 display 规则 没有匹配 [hidden] { display: none }。当iOS不交出水龙头时 到灯塔(Beacon未安装,或私人标签,其中Chrome和Firefox) 它不会从链接中打开应用程序,而是在该地址打开网页. beaconConnectUrl() 返回自成一体的页面的赤壁 控制系统.

发现边界

当一个信任的呼叫者提供已知的主机名和证书针时,浏览器 直接连接; 不获取 /health 或者说 /certificate.sha256数字 :

https://player.example/watch?mc_bridge=beacon.local&wt_port=33445&fingerprint=<64-hex-SHA256>

监督办必须解决实际广告问题 .local 主机名; 一个 DNS- SD 服务 实例名称本身不是主机名称。 针是全叶的SHA-256 证书 DER, 通过认证的信道提供, 而不是从 HTTP或未签名的Bonjour TXT唱片. 明确的针绕过发现缓存 并拯救了门户。 错误的,过期的,或者变形的指针不能关闭. 一个已知 主机名不建立初始 pin 信任, 而服务器 pin 不建立 取代桥的原产地接纳政策.

双方出席 mc_bridge 财务报告和审定财务报表 fingerprint (或 fp)选择此严格 路径,即使一个值是空的。 空或错构值为配置 错误, 不允许发现另一个网关; 删除参数到 请求普通的发现。 一个赤裸的 fingerprint 无 mc_bridge 没有 桥梁配置.

HTTPS 页面上一个明确的回回回接被直接拨出并保留 根据浏览器本地网络权限。 永远无法改变 保存 AutotLS 网关以绕过此策略 .

网络运输封存证书有效期不得超过14天. 这个 本地桥目前每次运行时都会发出新证书,所以 呼叫者必须在重启或旋转后提供当前指针。 这个直接 路径不添加 pin-distribution 服务或手动证书 UI.

普通 HTTPS JavaScript 无法列举 DNS- SD/ mDNS 服务或发行 DNS-SD/mDNS查询. 没有明确的钉子配置, 发现探测的原生 桥的回转 /health 终点( e)localhost 或者说 127.0.0.1· ; localhost 也覆盖一条连接到 ::1, (中文(简体) ), 验证BCDS-v1能力并完成SHA-256证书指纹, 然后打开一个直接的Web Transport(QUIC)连接 指纹. 这个 HTTP 靴子陷阱依赖于浏览器政策, 并且被 Safari 屏蔽在 HTTPS页面;它不是一个通用的移动发现机制.

局域网发现是一个单独的平台能力. 已安装的 IWA, 浏览器 扩展,或本地平台代理可以使用其平台 DNS-SD 堆栈 发现 _multicast-bridge._udp.local. 并提供一个配置的混凝土 浏览器的私人端点 。 常规页面没有列出 服务本身。 桥仍然只有桥:它携带多播字节到 window.multicast,而浏览器拥有演示文稿分辨率和媒体 翻译.

批发包packets 活动)

此桥返回的字节订阅也发出 packets: 每一个 将读取器装入一个发送批次解码,按到达顺序排列 冷冻阵列。 每一个元素都是一样的 bytes 事件会 携带(a) ArrayBuffer,或 { data, receiveTime, receiveTimeOrigin?, receiveTimestampSource } 当框架有计时元数据时)。 批次结束 读取器同步运行已经结束——在其现有的出产点, 或者在Web Transport的结尾读到,所以没有包在计时器和 批次没有添加自身大小常数.

packets 是提供者扩展名,而非被冻结 v1 的一部分 window.multicast 合同。 在使用和听完之前先发现它 两个表面之一:

if (subscription.eventTypes?.includes('packets')) {
  subscription.addEventListener('packets', (event) => {
    for (const packet of event.detail) consume(packet);
  });
} else {
  subscription.addEventListener('bytes', (event) => consume(event.detail));
}

订阅只构建一些听众要求的事件,所以 packets- 只有消费者从来不为每件DOM事件付费(计量) dispatchEvent + 键 CustomEvent 每条主线约22毫秒 第二组在Kirin 659上为~450包/秒. bench/packet-dispatch.mjs 驱动 真实读取器为真实的订阅并报告 DOM 事件和 CPU 时间 两个表层的包.

宣布交货subscription.delivery(中文(简体) )

一个字节订阅报告其数据包是如何到达该页面的,作为桥梁 服务器 已经申报了 subscribe_response数字 :

  • 'ordered-relay': 每一个包都穿行订阅器的一个可靠的BCDS 按套接字读取顺序排列的单流 。 服务器可能降下最老的队列 包在溢出但从不重排,所以页面看到一个子序列 套接字的接收订单. native-bcds-bridge (iOS灯塔桥) 宣布 此; 它没有发送数据格网媒体 .
  • 'datagram',或 undefined 当服务器没有声明时:否 命令承诺.

@blockcast/mmt-transport是因为 MulticastTransport 读一次每个加入和,因为 'ordered-relay',已经 FECManager 按流序决定 FEC 块归宿 代替数据克不活动截止日期:中继暂停不会丢失 资料。 在最后期限之后,50-200 ms在溪流上停放失败了~7%-9% iPhone Safari上的块,电线损失只有~0.2%。 客户 将声明通过并永不推断; 服务器也可以 将 WT 数据显示为订阅(例如,国际水协会服务人员) 已启用数据映射介质) 不得声明 'ordered-relay'。该值为 用于页面订阅寿命的固定; 宣告的重联重播 不同的记录,没有应用.

建筑和测试

npm --prefix packages/window-multicast-bridge install --include=dev
npm --prefix packages/window-multicast-bridge run build   # src/ -> minified dist/
npm --prefix packages/window-multicast-bridge test
npm --prefix packages/window-multicast-bridge run test:dist  # same suite on the minified dist/

test/vectors/ 拥有跨语言合同载体 本土桥梁 对(或packet-id-allow-list-v1.json, (中文(简体) ), bridge-enrollment-v1.json) (中文(简体) ). 与桥梁服务器同步修改; test/vectors.test.mjs 钉住他们 文摘,所以要更改,也要更新接针.

释放

桥版独立于合同 和适配器,所以它骑 自己的标签: 推 window-multicast-bridge-v<version>匹配 version 内 这个 package.jsonCI 建立,测试和包装,检查标签与 包装版本,并通过 npm 信任的出版以出处出版. 第一次公布这个名字需要一次性的靴子 ../multicast-contract/docs/RELEASE.md。 。 。 .

版本与发布记录

@blockcast/window-multicast-bridge 共发布 6 个版本,首次发布于 2026/10/21;过去 12 个月发布了 6 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.6.0latest2026/11/053 天前
0.4.02026/10/2514 天前
0.3.12026/10/2118 天前
0.3.02026/10/2118 天前
0.0.02026/10/2118 天前
0.0.0-stage2026/10/2118 天前

关于 @blockcast/window-multicast-bridge 的常见问题

@blockcast/window-multicast-bridge 是什么?

浏览器 MESC 多元填充,可以发现本地 Blockcast 桥并安装窗口. 通过Web Transport进行多播.

如何安装 @blockcast/window-multicast-bridge?

在项目目录运行 npm install @blockcast/window-multicast-bridge,或使用 pnpm add / yarn add / bun add。

@blockcast/window-multicast-bridge 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/blockcast__window-multicast-bridge 是否存在。

@blockcast/window-multicast-bridge 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@blockcast/window-multicast-bridge 可以商用吗?

@blockcast/window-multicast-bridge 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@blockcast/window-multicast-bridge 的下载量有多少?

根据 npm 官方下载统计,@blockcast/window-multicast-bridge 在 2026/10/09 – 2026/11/07 这 30 天内被下载 3,202 次,日均约 107 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@blockcast/window-multicast-bridge 还在维护吗?

最新版本 0.6.0 发布于 2026/11/05(3 天前);至今共发布 6 个版本,其中过去 12 个月发布了 6 个;首次发布于 2026/10/21。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。