Держу отдельный файл для socket.io:
const ee = require('emitter');
module.exports = (server) => {
var io = require('socket.io')(server);
connections = [];
io.on('connection', (socket) => {
connections.push(socket);
socket.on('disconnect', () => { // код... });
ee.on('image:upload', () => {
socket.emit('image:upload');
});
// и т.д.
});
}
Допустим, когда пользователь заливает картинку на сервер, по окончанию загрузки я сперва сообщаю об этом в EventEmitter, который уже сообщает об этом в socket и вызывается событие 'image:upload', которое уведомляет пользователя об окончании загрузки.
Я не могу понять, как можно пропустить EventEmitter, чтобы другие модули могли напрямую работать с socket.
Типичный код модуля такой:
app.post('/upload', () => {
const ee = require('emitter');
// код
ee.emit('image:upload');
});
По идее должно быть как-то через exports, но все попытки приводили только к undefined.
Как из модуля вызвать напрямую socket.emit('image:upload')?