如何获取对 Nextjs 服务器的引用

Hai*_*iri 6 node.js next.js

我正在尝试在我的 Nextjs 应用程序中使用ws(网络套接字)。

我不想创建新服务器,而是想将当前服务器对象传递给 ws 初始化:

const { Server } = require('ws');
wss = new Server({ myNextJs server instance here ... });
Run Code Online (Sandbox Code Playgroud)

那么:如何在运行时获取对 Nextjs 服务器的引用?

小智 2

您可以创建自定义服务器。请参阅https://nextjs.org/docs/advanced-features/custom-server

这是一个例子:

const express = require("express");
const next = require("next");

const dev = process.env.NODE_ENV !== "production";
const app = next({ dev });
const handle = app.getRequestHandler();
const server = express();

app.prepare().then(() => {
    server.get("/some-random-path", (req, res) => res.send("Hello, world!"));
    server.get("*", (req, res) => handle(req, res));
    server.listen(3000, "0.0.0.0", () => {
        console.log("Application started on http://localhost:3000");
    });
});

Run Code Online (Sandbox Code Playgroud)

然后运行新的服务器文件

  • `在决定使用自定义服务器之前,请记住,只有当 Next.js 的集成路由器无法满足您的应用程序要求时才应使用它。自定义服务器将删除重要的性能优化,例如无服务器功能和自动静态优化。是否可以在不损失性能的情况下实现。一定还有别的办法 (2认同)