node.js - 是否可以在 express 应用程序中运行节点工作程序
问题描述
我正在尝试在 node/express 应用程序中实现 node worker 并收到以下错误(服务器侦听端口 3002)
{"level":"error","message":{"code":"EADDRINUSE","errno":-98,"syscall":"listen","address":"::","port":3002},"service":"server"}
是否可以为节点工作人员提供单独的端口?或者我正在尝试实现反模式?
应用程序.js
const app = express()
...
app.use("/api/search", accommodation)
...
app.set('port', 3002);
住宿控制器
(req, res, next) => {
if (isMainThread) {
const workers = []
const callback = (data) => {
console.log(data)
workers[0].removeListener("message", callback)
workers[1].removeListener("message", callback)
workers[0].unref()
workers[1].unref()
}
const createWorker = (id, index) => {
const worker = new Worker(__filename, { workerData: { id, index }})
worker.on("error", err => { throw err })
worker.on("message", callback)
return worker
}
workers[0] = createWorker("id0", 0)
workers[1] = createWorker("id1", 1)
}
else {
console.log('this is worker')
parentPort.postMessage({ msg: "worker started" })
parentPort.on("message", (msg) => {
console.log(msgs)
if (msg === "terminate") {
exit(1)
}
if (msg === "next") {
parentPort.postMessage({ msg: {}})
}
exit(1)
})
}
res.send("ok")
}
解决方案
推荐阅读
- strapi - 我可以在哪里部署strapi进行生产?
- c++ - 为什么 0 == ("abcde"+1) 不是常量表达式?
- python - prevent flask reload on change
- laravel - Laravel Eloquent "with" 返回关系与限制
- c# - Using Regex.Replace function in c# program to replace a string(data) with "data"?
- javascript - Correct typing for nextElementSibling so .focus() can be used?
- c# - Why does .NET Core Convert.ToInt32 round up odd numbers
- fortran - Fortran Print Statement formatting, too many white spaces
- perforce - 暂时为自己禁用 perforce 签入
- javascript - web_accessible_resource javascript 函数不再定义