Вопрос

Я немного играю с Node.js и Socket.io. Это тот фрагмент кода, который я пишу:

app.get('/play', function (req, res) {
//some code you don't need to see
var gameMessage = io.of('/game'+gameId);
});

Все импортируется правильно. gameId правильно установлен и io переменная правильно инициализирована. При запуске этого кода (при попытке получить доступ к Localhost/Play) я получаю эту ошибку:

TypeError: Converting circular structure to JSON
    at Object.stringify (native)
    at Array.<anonymous> (/path/to/my/game/node_modules/express/node_modules/connect/lib/middleware/session/memory.js:74:31)
    at EventEmitter._tickCallback (node.js:126:26)

Если я прокомментирую var gameMessage Строка кода, я не получаю ошибки. Так что это генерирует.

Я бы хотел, чтобы эта линия оставалась там, потому что это создает необходимый мне канал. Таким образом, два человека могут играть вместе в моей игре. Если я не создаюсь этим и попытаюсь запустить какой -то код на стороне клиента, как

var chat = io.connect('http://localhost/chat' + gameId);
        chat.emit('guess', {
            guess: "ciao"
        });
        chat.on('guess', function (data) {
            alert(data);
        });

Я получаю бесконечную петлю ошибки в консоли, когда второй игрок подключается.

Может кто -нибудь угадать, что с этим не так? Спасибо.

Это было полезно?

Решение

То, что вы делаете, неправильно, вы не должны помещать этот код Socket.io в свой маршрут, приложения Express.js и приложения Socket.io не «подключаются» так.

Сделайте отдельный файл с вашим сервером socket.io, затем используйте Socket.io-client Если вы хотите подключиться к socket.io (со стороны сервера или на стороне клиента), чтобы отправить сообщение, например.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top