@linesb

Как передать io.to('...') как параметр функции?

Привет
Вот пример кода:
На сервере:
...
function start(socket) {
    setInterval(() => {
        socket.emit('update', Date.now());
    }, 2e3);
}

function main(io) {
    let connectons = [];
    let index = 0;
    io.on('connection', (socket) => {
        socket.on('start', () => {
            const { id }= socket;
            if (!connectons[id]) {
                connectons[id] = true;
                const group = `gr-${index}`;
                socket.join(group);
                ++index;
                start(io.to(group));
                // setInterval(() => {
                //    socket.emit('update', Date.now());
                // }, 1e3);
            }
        });
    });
}

main(io);


на клиенте:
socket.on('update', (time) => {
    console.log(time);
});
$('#start').click(() => {
    socket.emit('start');
});


Если на 1 из клиентов длать клик на кнопки, в консоли видем логи на всех клиентов. Почему так? Я жду логи только на клиенте на которым нажал на кнопку.
Если не вызывать start() а сразу setInterval(() => { .... то все работает как я ожидаю
Помогите помочь почему так.
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
@JorJeG
Здесь у тебя теряется this, как в этом примере
var name = 'window';
var obj = {
  name: 'obj',
  show: function() {
    console.log(this.name)
  }
};

var func = obj.show;
func();  // Твой случай

obj.show();
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы