首页 > 解决方案 > 是否可以在 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")
    }

标签: node.jsexpressworker

解决方案


推荐阅读