如何处理 ExpressJS 中的 HTTP 升级?

vin*_*ker 9 node.js express

最新的 ExpressJS 不再从 http.Server 继承。

如果我尝试侦听该upgrade事件,服务器将回答404 Not Found.

当前的[简化]代码是:

app.on('upgrade', function(req, socket, head) { /* ... */ });
Run Code Online (Sandbox Code Playgroud)

如果我尝试在 Google 上搜索答案,我只会找到与“3.0 -> 4.0 快速升级”相关的链接,而不是HTTP 升级

编辑:

根据@jfriend00 的要求,我的快速初始化[简化] 代码:

app = express.createServer();
app.listen(self.port, self.ipaddress);
Run Code Online (Sandbox Code Playgroud)

abe*_*ier 10

使用 Express 应用程序创建 HTTP 服务器:

const app = express()

const server = http.createServer(app);

server.on('upgrade', function (req, socket, head) {
  // ...
});

server.listen(5000);
Run Code Online (Sandbox Code Playgroud)

请参阅https://github.com/expressjs/express/issues/2556#issuecomment-75310480


jfr*_*d00 7

由于我的评论似乎对你有用,我会把它放在一个答案中。

express.createServer() 已被弃用很长时间并从 Express 4 中删除。您将在 Express 4 中使用以下命令创建 app 对象:

var app = express()
Run Code Online (Sandbox Code Playgroud)

然后从 http 服务器对象返回

var server = app.listen(...)
Run Code Online (Sandbox Code Playgroud)

如果您需要直接访问 http 服务器对象。