socket.io, выступая с node.js / express.js
Вопрос
Я немного играю с 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 (со стороны сервера или на стороне клиента), чтобы отправить сообщение, например.