【发布时间】:2019-08-27 01:33:46
【问题描述】:
我正在尝试将 socket.io 集成到我的项目中。 下面的代码工作正常。
io.on('connection', (socket) => {
console.log('a user connected');
socket.on('someEvent', (data) => {
io.emit('someEvent2', data);
});
});
在我将套接字处理程序放入单独的文件之前,一切正常。
server.js
const socketHandlers = require('./socket/handlers');
io.on('connection', socketHandlers);
handlers.js
const socketHandlers = (socket) => {
console.log('a user connected');
socket.on('someEvent', (data) => {
io.emit('someEvent2', data); ---here's a problem
});
};
module.exports = socketHandlers;
现在我收到一个错误 - io 未定义。这里有什么问题?
【问题讨论】:
-
你需要像这样
var io = require('socket.io')(app); -
我是在 server.js 文件中完成的。将套接字处理程序放在单独的文件中后出现此错误。这一行的问题 - io.on ('connection', socketHandlers)。但我不明白出了什么问题
-
ha.. 您需要在
server文件中声明的io的相同实例,因为当您发出时,它需要连接。在一个文件中声明的io在另一个文件中不可访问。 -
所以...我需要在handlers.js 中声明所有依赖项?我的意思是app,express,http等。有没有可能让它更容易?
-
您可以从共享文件中导出
io实例,然后将该实例导入到任何需要它的地方。这就是你在 node.js 中的模块之间共享数据的方式。
标签: javascript node.js module socket.io