cluster モジュールについては知っていますが、worker_threads について質問します。
コード例
const { Worker, isMainThread, threadId } = require('worker_threads')
const { createServer } = require('http')
if (isMainThread) {
let w1 = new Worker(__filename)
let w2 = new Worker(__filename)
} else {
const server = createServer((req, res) => {
res.end(`response from thread ${threadId}`)
})
server.listen(8080, () => {
console.log(`Thread ${threadId} is listening ${server.address().port}`)
})
}
このコードを Windows で実行すると、明らかなエラーが発生します
Error: listen EADDRINUSE: address already in use :::8080
しかし、WSLではエラーなく動作します
$ node ./index.js
Thread 2 is listening 8080
Thread 1 is listening 8080
しかし、ブラウザーでは、常に単一のワーカーからのみ応答を受け取ります。開始した順序によって異なります
ワーカー スレッドで単一の http ポートをリッスンできますか? はいの場合、このポートで負荷分散を行うにはどうすればよいですか? nodejsがWSLで同じポートをリッスンできるのはなぜですか?