Есть ли способ использовать parentPort.on () в рабочих потоках в node js с server.listen () - PullRequest
1 голос
/ 12 июля 2020

Всякий раз, когда я пытаюсь использовать рабочий, имеющий
Worker file =>

parentPort.on('message',msg =>{
    //some code here
})

Main file =>

server.listen(3000,function(){
    console.log('Server running');
});

с уже прослушивающим сервером, он выдает эту ошибку

Error: listen EADDRINUSE: address already in use 127.0.0.1:3000
    at Server.setupListenHandle [as _listen2] (net.js:1314:16)
    at listenInCluster (net.js:1362:12)
    at GetAddrInfoReqWrap.doListen [as callback] (net.js:1499:7)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:68:8)
Emitted 'error' event on Worker instance at:
    at Worker.[kOnErrorMessage] (internal/worker.js:233:10)
    at Worker.[kOnMessage] (internal/worker.js:243:37)
    at MessagePort.<anonymous> (internal/worker.js:164:57)
    at MessagePort.emit (events.js:315:20)
    at MessagePort.onmessage (internal/worker/io.js:78:8)
    at MessagePort.exports.emitMessage (internal/per_context/messageport.js:11:10) {
  code: 'EADDRINUSE',
  errno: -98,
  syscall: 'listen',
  address: '127.0.0.1',
  port: 3000
}

Я пробовал использовать MessageChannel (), но он также дает ту же ошибку. Подскажите, пожалуйста, в чем причина ошибки и как ее исправить.

1 Ответ

0 голосов
/ 13 июля 2020

EADDERINUSE звучит так, как будто вы пытаетесь запустить новый сервер на том же порту как в основном файле, так и в вашем рабочем потоке (ах).

Вам нужно убедиться, что вы не пытаетесь запустите сервер в рабочем потоке (ах) или, если вам нужен сервер в рабочих потоках, тогда каждый из них должен быть на уникальном порту.

...