Ошибка io.sockets.emit Обратные вызовы не поддерживаются при трансляции скрипта js - PullRequest
0 голосов
/ 04 ноября 2018

когда я запускаю свой js-скрипт с помощью nodejs, я получаю сообщение об ошибке:

/var/www/html/bot/node_modules/socket.io/lib/namespace.js:224
    throw new Error('Callbacks are not supported when broadcasting');
    ^

Error: Callbacks are not supported when broadcasting
    at Namespace.emit (/var/www/html/bot/node_modules/socket.io/lib/namespace.js:224:11)
    at Object.<anonymous> (/var/www/html/bot/driver.js:307:14)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Function.Module.runMain (module.js:694:10)
    at startup (bootstrap_node.js:204:16)
    at bootstrap_node.js:625:3

часть моего сценария, где это происходит:

    io.sockets.emit('disconnect', function() {
    var index = -1;
    if(users[user.steamid])
    index = users[user.steamid]['socket'].indexOf(socket.id);
    if (index > -1) {
        users[user.steamid]['socket'].splice(index, 1);
    }
    if(users[user.steamid]) { if(Object.keys(users[user.steamid]['socket']).length == 0) delete users[user.steamid]; }
  });

Подскажите, пожалуйста, что не так, и объясните мне ошибку?

1 Ответ

0 голосов
/ 04 ноября 2018

Я вижу, вы хотите отправить disconnect событие на все сокеты (что вы хотите ????). Функция emit имеет только 2 параметра (event_name, data), в вашем коде вы помещаете функцию в качестве второго параметра (вместо data объекта).

Но я думаю, что ваша логика заключается в удалении пользователя при обнаружении отсоединения сокета, хммм

Смотрите здесь:

io.sockets.on('connection', function (socket) {
    socket.on('disconnect', function () {
        var index = -1;
        if (users[user.steamid])
            index = users[user.steamid]['socket'].indexOf(socket.id);
        if (index > -1) {
            users[user.steamid]['socket'].splice(index, 1);
        }
        if (users[user.steamid]) { if (Object.keys(users[user.steamid]['socket']).length == 0) delete users[user.steamid]; }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...