javascript - 在 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()
不是一个函数。我认为存在与代码执行流程和异步内容有关的问题,但我不能确切地说出是什么。
解决方案
也许试试这个?我有一段时间没有合作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);
推荐阅读
- angular - 获取 Promise 在 ionic 框架上返回的元素数量
- ruby-on-rails - 通过 Rails 中的方法查询 SQL 或 AREL
- ssl - ssl_bump 在wireshark 中应该看起来有多成功?
- python - 大查询数据流加载到 NULL 分区
- python - 异常处理——整个脚本的最终例程
- python - 新 Postgresql DB 中的 UUID 字段失败 ValidationError: ["'1' is not a valid UUID."]
- swift - 从 C 导入的扩展结构
- amazon-web-services - 是否可以使用 cloudformation 设置本地 dynamodb 表?
- objective-c - 如何在 Mojave 中为我的应用禁用暗模式?
- xcode - macOS 10.14 Mojave 下无法加载 Info.plist 错误 Xcode 10