NodeJS www.example.com是否socket.io使用表示使用

qyzbxkaa  于 2023-04-20  发布在  Node.js
关注(0)|答案(1)|浏览(169)

如果我使用express中间件,socket.io也会使用它吗?
我需要为每个http请求和socket.io请求调用中间件

import express from "express";
import { createServer } from "http";
import { Server } from "socket.io";

const app = express();
const httpServer = createServer(app);
const io = new Server(httpServer, { /* options */ });

// If I use express middleware will socket.io use it too?
app.use(middleware)

// Or I should use it for io too
io.engine.use(middleware);

httpServer.listen(3000);
1dkrff03

1dkrff031#

从Socket.IO文档中了解与Express中间件的兼容性:
由于Socket.IO中间件没有绑定到通常的HTTP请求/响应周期,因此它们与Express中间件并不真正兼容。
也就是说,从版本4.6.0开始,Express middlewares现在由底层引擎支持:

io.engine.use((req, res, next) => {
  // do something
  next();
});

每个传入的HTTP请求(包括升级请求)都会调用中间件。

编辑:

也许你可以实现一个简单的例子并给予一下。简单的例子如下:

app.use((req, res, next) => {
  console.log("Express Middleware");
  next();
});

io.engine.use((req, res, next) => {
  console.log("Socekt.IO Middleware");
  next();
});

相关问题