Implement `MessagePort` and `MessageChannel` along the lines of the DOM classes of the same names. `MessagePort`s initially support transferring only `ArrayBuffer`s. Thanks to Stephen Belanger for reviewing this change in its original form, to Benjamin Gruenbaum for reviewing the added tests in their original form, and to Olivia Hugger for reviewing the documentation in its original form. Refs: https://github.com/ayojs/ayo/pull/98 PR-URL: https://github.com/nodejs/node/pull/20876 Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Shingo Inoue <leko.noor@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com> Reviewed-By: John-David Dalton <john.david.dalton@gmail.com> Reviewed-By: Gus Caplan <me@gus.host>
21 lines
540 B
JavaScript
21 lines
540 B
JavaScript
// Flags: --experimental-worker
|
|
'use strict';
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
|
|
const { MessageChannel } = require('worker');
|
|
|
|
{
|
|
const { port1, port2 } = new MessageChannel();
|
|
|
|
const arrayBuffer = new ArrayBuffer(40);
|
|
const typedArray = new Uint32Array(arrayBuffer);
|
|
typedArray[0] = 0x12345678;
|
|
|
|
port1.postMessage(typedArray, [ arrayBuffer ]);
|
|
port2.on('message', common.mustCall((received) => {
|
|
assert.strictEqual(received[0], 0x12345678);
|
|
port2.close(common.mustCall());
|
|
}));
|
|
}
|