ItsEvilTime
@ItsEvilTime
Сайленсер не дает мне покоя

Как правильно вызвать событие socket.io из модуля?

Держу отдельный файл для 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')?
  • Вопрос задан
  • 246 просмотров
Пригласить эксперта
Ответы на вопрос 1
@miki131
require внутри функции?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы