简体   繁体   English

需要后监听 Socket.io 服务器

[英]Listen to Socket.io server after require

When I'm activating the io server right after require it works fine, but when I want to do after require my code gives an error when it reaches the first interaction with io (defining middleware in my case).当我在 require 之后立即激活io服务器时,它工作正常,但是当我想在 require 之后执行时,我的代码在与io的第一次交互(在我的情况下定义中间件)时出现错误。

This is working fine:这工作正常:

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

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

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

This one gives an error:这个给出了一个错误:

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

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

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

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

The error says that io.use() is not a function.错误表明io.use()不是函数。 I think there is a problem related to the code execution flow and asynchronous stuff, but I can't say what exactly.我认为存在与代码执行流程和异步内容相关的问题,但我不能说到底是什么。

Maybe try this?也许试试这个? I haven't worked with socket.io in a while, but I remember it was something like this.我有一段时间没有使用socket.io ,但我记得它是这样的。

What this does differently is setting io to the return value of the listen method.这样做的不同之处在于将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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM