Channel Messaging API
注意:此功能在 Web Workers 中可用。
通道消息 API 允许同一文档中不同浏览上下文(例如,两个 iframe,或者主文档和一个 iframe,通过 SharedWorker 的两个文档,或两个 worker)运行的两个独立脚本直接通信,通过两端各有一个端口的双向通道(或管道)互相传递消息。
概念与用法
使用 MessageChannel() 构造函数创建一个消息通道。创建后,可以通过 MessageChannel.port1 和 MessageChannel.port2 属性(它们都返回 MessagePort 对象)访问通道的两个端口。创建通道的应用使用 port1,而端口另一端应用使用 port2 —— 您将消息发送到 port2,然后使用 window.postMessage 以及两个参数(要发送的消息,以及要转移所有权的对象的,在此情况下是端口本身)将端口传输到另一个浏览上下文。
当这些可转移对象被传输时,它们在其先前所属的上下文中将不再可用。端口在发送后,原始上下文将无法再使用它。
另一个浏览上下文可以使用 onmessage 来监听消息,并使用事件的 data 属性获取消息内容。然后,您可以通过使用 MessagePort.postMessage 向原始文档发送消息进行响应。
当您想停止通过通道发送消息时,可以调用 MessagePort.close 来关闭端口。
有关如何使用此 API 的更多信息,请参阅 使用通道消息。
接口
MessageChannel-
创建一个新的消息通道用于发送消息。
MessagePort-
控制消息通道上的端口,允许从一个端口发送消息并监听它们到达另一个端口。
示例
规范
| 规范 |
|---|
| HTML # channel-messaging |
浏览器兼容性
api.MessageChannel
加载中…
api.MessagePort
加载中…