首页 > 解决方案 > 在 require 后监听 Socket.io 服务器

问题描述

当我io在 require 之后立即激活服务器时,它可以正常工作,但是当我想在 require 之后执行时,我的代码在与io(在我的情况下定义中间件)进行第一次交互时会出错。

这工作正常:

const io = require('socket.io').listen(3002);

const { authValidation } = require('./middlewares');

//Middlewares
io.use(authValidation);
. . .

这给出了一个错误:

const io = require('socket.io');

const { authValidation } = require('./middlewares');

io.listen(3002, () => {
  console.log(`Listening to port 3002`);
});

//Middlewares
io.use(authValidation);
. . .

错误说这io.use()不是一个函数。我认为存在与代码执行流程和异步内容有关的问题,但我不能确切地说出是什么。

标签: javascriptnode.jsasynchronoussocket.io

解决方案


也许试试这个?我有一段时间没有合作socket.io了,但我记得是这样的。

不同之处在于设置io方法的返回值listen

const socket = require('socket.io');

const { authValidation } = require('./middlewares');

const io = socket.listen(3002, () => {
  console.log(`Listening to port 3002`);
});

//Middlewares
io.use(authValidation);

推荐阅读