#node.js
Вопрос:
У меня есть продвинутый сервер, управляющий несколькими API и потоковой передачей везде, где это возможно.
Существует 2 основных потока, threadHub * UIThread.
Они используют канал вещания для связи.
var bc = new BroadcastChannel('main', {
type: 'node',
webWorkerSupport: true
})
threadHub использует это для получения всех сообщений, которые он отправляет в функцию, которая правильно их обрабатывает.
Он успешно принимает все отправленные сообщения.
bc.onmessage = (event) => {
var data = event.data;
include.threading.getData(data);
};
UIThread использует тот же метод, но никогда не получает никаких сообщений, даже от себя.
bc.onmessage = (event) => {
var temp = event.data;
print(`DATA: ${temp}`)// print calls a seperate function where the data is sent to the threadHub which controls STDOUT and logs it. This function does work.
var buffer = temp.split("|");
var threadId = buffer[0];
var dataType = buffer[1];
var data = buffer[2];
if (!threadId == "-1") return 1;
switch (dataType) {
case "log": {
debug = debug data;
break;
}
}
};
Все сообщения отправляются с помощью bc.postMessage(`0|${text}`)
Канал вещания определен здесь:
const {
Worker, SHARE_ENV, isMainThread, parentPort, workerData, BroadcastChannel
} = require('worker_threads');
Итак, мой вопрос в том, почему bc.onmessage
он не работает в UIThread, но безупречно работает в threadHub?