【发布时间】:2019-04-11 11:21:43
【问题描述】:
我正在使用 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;
}
}
}
【问题讨论】: