Как получить доступ к объекту io с помощью обратного вызова io.sockets.on? - PullRequest
0 голосов
/ 16 декабря 2018

Я не хочу менять метод сокетов .Я надеялся получить доступ к io из функции подключен .

Возможно ли это?

function sockets (server) {
  const io = require('socket.io')(server);
  io.sockets.on('connection', connected);
}

const connected = (socket) => {
  socket.on('emit_to_all', data => {
    emitToAll(socket, data);

    // above could be achieved with
    // io.emit('emit_to_all', data);
  });
};

Я проверил на github здесь но во всех предварительных примерах не использовался именованный обратный вызов.

Я нашел необходимые документы здесь .

Наконец, в основных документахAPI здесь .

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Ну, вы должны передать объект в качестве параметра или связать его с контекстом.Если вы считаете, что синтаксис замыкания сбивает с толку, вы можете просто использовать связывание.

Если вы сделаете это:

    io.sockets.on('connection', connected.bind(io));

Тогда ваша подключенная функция this будет объектом to.Кроме того, вы можете передать его в качестве параметра аналогичным образом, если вы обновите свои параметры.

    io.sockets.on('connection', connected.bind(null, io));

    const connected = (io, socket) => {
      // Etc
0 голосов
/ 16 декабря 2018

Вы можете использовать можно сделать что-то вроде этого

function sockets (server) {
  const io = require('socket.io')(server);
  io.sockets.on('connection', connected(io));
}

const connected = (io) => (socket) => {
  socket.on('emit_to_all', data => {
     emitToAll(socket, data);

     // above could be achieved with
     io.emit('emit_to_all', data);
  });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...