- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在了解 MessageChannel和 transferable objects .
我有一个与我的页面跨域的 iframe。围绕 MessageChannel 的文档表明它完全支持跨域通信。
我在 iframe 的跨域页面中得到了这段代码:
var messageChannel = new MessageChannel();
// Transfer port2 to the background page to establish communications.
window.parent.postMessage('connect', 'chrome-extension://jbnkffmindojffecdhbbmekbmkkfpmjd', [messageChannel.port2]);
messageChannel.port1.start();
// Give time for background to setup its port. Not great practice, but OK for example.
setTimeout(function(){
// Create a 32MB "file" and fill it.
var uInt8Array = new Uint8Array(1024*1024*32); // 32MB
for (var i = 0; i < uInt8Array.length; ++i) {
uInt8Array[i] = i;
}
messageChannel.port1.onmessage = function(message){
console.log('iframe message:', message);
};
messageChannel.port1.postMessage(uInt8Array.buffer, [uInt8Array.buffer]);
if (uInt8Array.buffer.byteLength)
throw "Failed to transfer buffer";
}, 1000);
在我的背景页面中我有:
window.onmessage = function(messageEvent) {
// Make sure the origin is correct for security
if (messageEvent.origin === 'https://www.youtube.com') {
if (messageEvent.ports.length > 0 && messageEvent.data === 'connect') {
var port = messageEvent.ports[0];
port.onmessage = function (message) {
console.log("background message:", message);
};
}
}
};
当我尝试向 uInt8Array 缓冲区发送消息时——我在另一端没有收到任何数据:
但如果我尝试发送一些简单的内容,请说:
messageChannel.port1.postMessage('hello');
然后我明白了:
使用可转移对象时——数据是否在其他地方表示?我似乎能够很好地传输端口,但我正在努力传输数据数组。但是,因为我的异常没有被抛出——看起来它被转移了……但它去了哪里??
最佳答案
我减少了您的代码示例,发现 ArrayBuffer
在通过 MessageChannel
的 MessagePort
时总是丢失。
报告为问题 334408:“在 postMessage 期间 ArrayBuffer 在 MessageChannel 中丢失(接收者的 event.data == null)” https://code.google.com/p/chromium/issues/detail?id=334408
关于javascript - MessageChannel port.postMessage 的数据在调用postMessage 时为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21107232/
使用 html5 我可以做到这一点: document.getElementById('someIframe').contentWindow.postMessage('hi', 'someDomain
我正在尝试在本地文件夹中生成一个文件,然后通过 SFTP 将其发送到远程服务器,最后删除创建的“临时”文件。几乎一切正常。 问题:当我尝试使用 File.delete (或 Files.delete)
我对 postMessage 和 MessageChannel 感到困惑。 以下是来自 MDN 的一些代码: var channel = new MessageChannel(); var para
我不明白 MessageChannel 和 WebSockets 之间有什么区别? 我需要满足以下要求: 尽量减少延迟 全双工 最小 header 数据长度 两者都满足这个要求吗?哪个更好? 最佳答案
好的,在构建 x 域 sso 逻辑时,我们遇到了一个未知数。 对于 Windows SCSS 子 IE10 使用 JSONP 或 window.postMessage 和 MessageChannel
我想对两个同样使用 Spring Integration 流程的 Spring Boot 应用程序进行集成测试。为了测试我的应用程序,我想检查通过 myMessageChannel 路由的消息。它在其
我正在使用 MessageChannel() 在页面和 iframe 之间传递消息。在我的场景中,iframe 是通信发起者,包含它的页面接收、转换并响应 iframe。 当我实现该系统时,我首先获取
我正在了解 MessageChannel和 transferable objects . 我有一个与我的页面跨域的 iframe。围绕 MessageChannel 的文档表明它完全支持跨域通信。 我
我正在使用 Spring 云流,我想保存消息并在 Kafka 服务器消失时重新尝试将它们发布到主题上,但即使 Kafka/Zookeeper 服务器停止,MessageChannel send() 方
我正在创建一个连接到服务器套接字的客户端。服务器直接回复并自行关闭套接字。 以下代码通常有效。意思是:我可以看到打印到控制台的输出。 @Service public class MyService {
我正在尝试将队列连接到 MessageChannel 的前面,并且我需要以编程方式执行此操作,以便可以在运行时完成以响应 osgi:listener 被触发。到目前为止我已经得到: public vo
我正在开发一个应用程序,在该应用程序中,我从 IBM MQ 队列中读取数据、处理消息,然后将该消息发送到 Kafka 主题。我正在尝试处理我的卡夫卡经纪人出现故障的情况。在这种情况下,我希望我的应用程
我已经开发了异步 Spring Cloud Stream 服务,并且我正在尝试开发一个边缘服务,该服务使用 @MessagingGateway 来提供对本质上异步的服务的同步访问。 我目前得到以下堆栈
我想实现网络 worker 之间的通信。我阅读了 W3C 文档,发现 MessageChannel 是其中一种方法,但在阅读 MessageChannel 时,我无法理解如何使用 messagecha
我是一名优秀的程序员,十分优秀!