¿Los datos de MessageChannel port.postMessage son nulos cuando se llama a postMessage con un objeto transferible?

Estoy aprendiendo sobreMensaje canal yobjetos transferibles.

Tengo un iframe que es de dominio cruzado desde mi página. La documentación que rodea a MessageChannel indica que admite totalmente las comunicaciones entre dominios.

Tengo este código dentro de mi página de dominios cruzados dentro de un 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);

y en mi página de fondo tengo:

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);
            };
        }

    }
};

Cuando intento enviar un mensaje al búfer de uInt8Array, no recibo datos del otro lado:

pero si intento enviar algo simple, diga:

messageChannel.port1.postMessage('hello');

entonces veo:

Cuando se usan objetos transferibles, ¿se representan los datos en algún otro lugar? Parece que puedo transferir el puerto muy bien, pero estoy luchando para transferir la matriz de datos. PERO, ya que mi excepción no ha sido lanzada, parece que se transfirió ... pero, ¿a dónde fue?

Respuestas a la pregunta(1)

Su respuesta a la pregunta