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
コードの行、エラーが発生しません。それが生成されています。
必要なチャネルがインスタンス化されているので、そのラインをそこにとどめたいと思います。このようにして、2人が私のゲームを一緒にプレイできます。私がそれをインスタンス化していない場合、クライアント側でいくつかのコードを実行しようとした場合
var chat = io.connect('http://localhost/chat' + gameId);
chat.emit('guess', {
guess: "ciao"
});
chat.on('guess', function (data) {
alert(data);
});
2番目のプレーヤーが接続すると、コンソールでエラーの無限のループが得られます。
誰かがこれの何が問題なのか推測できますか?ありがとう。
解決
あなたがしていることは間違っています、あなたはそのsocket.ioコードをあなたのルートに入れるべきではありません、Express.jsアプリとsocket.ioアプリはそのように「接続」しません。
socket.ioサーバーで別のファイルを作成し、次に使用します socket.io-client たとえば、socket.io(サーバー側またはクライアント側から)に接続する場合。たとえば、メッセージを送信します。
所属していません StackOverflow