我正在使用nodejs和socket.io创建一个用于实时操作的新应用程序,当我尝试设置一个静态属性以在我拥有的所有类(即io实例)中使用它时,问题就来了。我现在正在做的是在服务器启动时分配io属性,并在尝试从其他类获取它时返回null。 就像对每个require('./ myclass')来说,它都会返回文件的新实例。
这是我的类,在其中我可以在构造函数中设置io实例
class IO {
constructor(io) {
IO.io = io;
ioService.foo ='asdasd';
// this.run();
}
}
当服务器在index.js中启动时调用它:
const io = require('socket.io')(server, {serveClient: false});
const IO = require('./services/socket/io');
new IO(io);
从其他班级调用
class Admin {
send(id, type, data) {
// console.log('IO.io' , io); // it prints null
switch (type) {
case 'ORDER_CREATED':
io.emit('message', {
type: 'ORDER_CREATED',
data: data
}); // error because io undefined
break;
}
}
}
答案 0 :(得分:0)
我在nodejs中使用“全局”解决了我的问题,但对执行方法仍然不满意,并等待一些答案。