Проблема с широковещательным каналом при использовании с модулем nodejs worker_threads - PullRequest
0 голосов
/ 28 февраля 2019

Я пишу скрипт nodejs.В этом я создал работника с использованием worker_threads и BroadcastChannel.Я не могу отправить сообщение из моей основной темы в рабочие темы.Тем не менее я могу отправить сообщение от 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')
`

1 Ответ

0 голосов
/ 28 февраля 2019

Вам потребуется добавить еще один 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)
};
...