有消息频道和没有消息频道的网络消息有什么区别
What's difference between web-messaging with MessageChannel and without?
使用 html5 我可以这样做:
document.getElementById('someIframe').contentWindow.postMessage('hi', 'someDomain');
或者我可以使用MessageChannel:
var mc = new MessageChannel();
document.getElementById('someIframe').contentWindow.postMessage('hi', 'someDomain',[mc.port2]);
这两种方式之间真正的区别是什么?何时必须使用第一个变体,何时必须使用第二个变体?
我怀疑我能比下面更好地解释它,但是重要的一点是,一旦端口被发送,后续消息就不需要进行源检查。使用 window.addEventListener('message', ...)
时,您必须在每次收到消息时验证消息源是否受信任。
当您创建新的 MessageChannel 对象时,它有两个连接的 消息端口对象(端口 1 和端口 2)。其中一个端口被发送到 另一个窗口或框架,并且可以在没有的情况下发送和接收消息 使用window.postMessage时需要的重复来源检查。 仅在以下情况下需要验证端口和消息的来源 端口被发送到创建它们的窗口以外的窗口。 消息端口通过发送和接收简化了消息传递过程 通过两个(并且仅这两个)连接的端口的消息。消息 使用 postMessage 在端口之间发布。由于端口将 仅接受连接端口之间的消息,不再接受 建立连接后需要进行验证。 消息通道支持之间的异步通信 IFrameElements、跨域窗口或同一页面通信。 http://msdn.microsoft.com/en-us/library/windows/apps/hh441303.aspx
相关文章:
- Ajax聊天消息重复而不仅仅是更新
- 将电视直播频道从网站嵌入我的网站
- 如果localstorage为空,则显示欢迎消息
- 绑定时将Parsley minlength消息作为选项传递时,未对其进行自定义
- 离开页面时弹出消息
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 消息显示之外的淘汰验证
- 选项卡侦听器未被来自后台脚本的消息激活
- jQuery在输入下验证post错误消息
- Scipt未在选定选项卡中执行以发送和接收消息
- 检查xmlhttprequest问题的消息
- AngularJs对ng消息的自定义替换
- ng消息仅在触摸时显示错误,并在错误的初始显示上转换
- 如何不向频道的所有订阅者发送消息
- 获取频道中的消息数,而无需在 Twilio IP 消息传递中检索它们
- 有消息频道和没有消息频道的网络消息有什么区别
- 沼泽龙:如何确定消息发布到的频道
- 消息:'禁止'尝试将频道添加到PubNub中的频道组时
- 无法使用Hubot向Slack中的特定频道发送消息- slackrterror:没有频道id
- 如何使用CometD向频道的所有Javascript订阅者发布消息?