diff options
author | Satya Rohith <me@satyarohith.com> | 2024-04-30 16:59:39 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-30 16:59:39 +0530 |
commit | 0156f82e7334f9ef31ff60b579baa4ba10bcd226 (patch) | |
tree | d692f9b82b7244b4f6c5672479a84d552ea7fe7c /ext/node/polyfills/worker_threads.ts | |
parent | ce4a7773ccb606c51c824881e37043bc937c94f2 (diff) |
fix(ext/node): support multiple message listeners on MessagePort (#23600)
Closes https://github.com/denoland/deno/issues/23561
Diffstat (limited to 'ext/node/polyfills/worker_threads.ts')
-rw-r--r-- | ext/node/polyfills/worker_threads.ts | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/ext/node/polyfills/worker_threads.ts b/ext/node/polyfills/worker_threads.ts index e88e6368b..71999dd62 100644 --- a/ext/node/polyfills/worker_threads.ts +++ b/ext/node/polyfills/worker_threads.ts @@ -484,9 +484,17 @@ function webMessagePortToNodeMessagePort(port: MessagePort) { // deno-lint-ignore no-explicit-any const _listener = (ev: any) => listener(ev.data); if (name == "message") { - port.onmessage = _listener; + if (port.onmessage === null) { + port.onmessage = _listener; + } else { + port.addEventListener("message", _listener); + } } else if (name == "messageerror") { - port.onmessageerror = _listener; + if (port.onmessageerror === null) { + port.onmessageerror = _listener; + } else { + port.addEventListener("messageerror", _listener); + } } else if (name == "close") { port.addEventListener("close", _listener); } else { |