@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(() => { .... то все работает как я ожидаю
Помогите помочь почему так.
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 1
@JorJeG
Здесь у тебя теряется this, как в этом примере
var name = 'window';
var obj = {
  name: 'obj',
  show: function() {
    console.log(this.name)
  }
};

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

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

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

Войти через центр авторизации
Похожие вопросы
MedPoint24 Москва
от 120 000 до 150 000 руб.
WiliX Краснодар
от 50 000 до 140 000 руб.
17 июн. 2019, в 19:31
500 руб./за проект
17 июн. 2019, в 19:17
1500 руб./за проект