javascript - 与 Node.js Worker_Threads 模块一起使用时出现广播 channel 问题

标签 javascript node.js web-worker broadcast-channel

我正在编写一个nodejs脚本。我使用worker_threads和BroadcastChannel创建了一个worker。 我无法将消息从主线程发送到工作线程。但是,我可以从 Worker 向主线程发送消息。

以下是我的 main.js 代码

 let worker = new Worker('worker.js')
 let channel = new BroadcastChannel('testChannel', { 
   type: 'node', 
   webWorkerSupport: true
 })

 channel.postMessage('sending message to worker')

 channel.onmessage  =  message =>  {
 console.log('received message in channel main')
   console.log(message)
 }  

以下是worker.js中的代码

 let channel = new BroadcastChannel('testChannel', {
   type: 'node', 
   webWorkerSupport: true
 })

 channel.onmessage = message => {
   console.log('received message in channel')
   console.log(message)
 }

 channel.postMessage('from worker')
`

最佳答案

您需要为传入消息添加另一个 BroadcastChannel 对象。

示例(main.js):

let broadcastingChannel = new BroadcastChannel('testChannel', { 
    type: 'node', 
    webWorkerSupport: true
});

broadcastingChannel.postMessage('sending message to worker')


let incomingChannel = new BroadcastChannel('testChannel', { 
    type: 'node', 
    webWorkerSupport: true
});

incomingChannel.onmessage = message => {
    console.log('received message in channel main')
    console.log(message)
};

关于javascript - 与 Node.js Worker_Threads 模块一起使用时出现广播 channel 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54925190/

相关文章:

javascript - 基于数组函数结果的 If..else 语句

javascript - 共享 worker 在重新加载页面时终止

javascript - Webwork-threads Nodejs 访问作用域外的函数/变量

javascript - 将原型(prototype)方法传递给 Promise 的 then 方法

events - NodeJS process.stdin `end` 事件中断 http.server 操作

javascript - 网络 worker : NotFoundError when I try to read a file created in the main thread

javascript - 切换div应该先隐藏

javascript - 捕获超过 1 个单词的字符串并将其转换为用破折号分隔的单个字符串

javascript 删除选择列表中选定的元素

javascript - 如何保持 Javascript 数组排序,而不对其进行排序