【发布时间】:2017-08-13 07:25:57
【问题描述】:
我正在尝试按照 Patrick Roberts 在此页面上给出的说明进行操作:
How can i export socket.io into other modules in nodejs?
在我的 consumer.js 中,当我调用 socket.emit('message') 时,我收到一个错误消息: "无法读取属性 'emit' of null"
为什么我无法使用 emit?
这是我的代码: io.js 文件(在中间件目录中)
var socketIO = require('socket.io');
var io = null;
exports.io = function() {
return io;
};
exports.initialize = function(server) {
io = socketIO(server);
io.on('connection', (socket) => {
console.log('user connected')
socket.emit('newMessage');
socket.on('hello', (msg) => {
console.log('message: ' + msg);
});
socket.on('disconnect', () => {
console.log('user disconnected');
});
});
};
在 app.js 中,我需要 io 文件:
var io = require('./middleware/io').initialize(server);
在我的 consumer.js 中,我有以下内容:
var socket = require('../middleware/io').io();
然后从我正在调用的函数中:
socket.emit('message')
来自 io.js 文件中的发射正在工作 - 我试图在 consumer.js 中使用的发射没有。
【问题讨论】:
-
你写的邮政编码
-
代码添加到上面的文件中。