質問

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(サーバー側またはクライアント側から)に接続する場合。たとえば、メッセージを送信します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top