0

私は node.js の最新バージョンで socket.io を使用しています。socket.io は興味深い動作を示しています。接続イベントはクライアント側で発生しますが、サーバー側では発生しません。リロード後、または単にページを再度ロードした後、クライアント側とサーバー側の両方でイベントが正しく発生しました。何が問題なのですか (私のコードで?)?

// Client
var socket = io.connect(window.location.protocol + '//' + window.location.hostname, {
    'sync disconnect on unload': true
});

socket.on('connect', function() {
    alert("Connect");
    // Do other stuff
});

-

// Server
io.sockets.on('connection', function(socket) {
    console.log("connection");

    io.sockets.on('connect', function(socket) {
        console.log("connect");
     });
});

サーバーを開始し、ページをロードしました: クライアントはアラートを発し、サーバーは単にログを記録しconnectionます。ページを再度ロードすると、 と の両方がログに記録さconnectionconnectます。

更新: 最初の接続だけでこのような問題が発生したようですが、その後はどこでも期待どおりに動作します。すべてのノード サーバー (再) 起動の直後に、その動作が表示されます。注: ノード自体は、socket.io が使用されているページを配信し、最初の要求でも機能するため、ノードの問題は除外する必要があります。ブラウザも問題ではありません。すべてのブラウザで同じです。

4

1 に答える 1

0

Socket.IOの場合、クライアント側connectionと同等のサーバー側です。connectしたがって、connectionイベントのコールバック内にいる場合、ソケットは既に接続を確立しており、他のイベントをリッスンする必要はありません。connectサーバー側に何があるかわかりませんが、文書化されておらず、機能しません。

// on the server
io.sockets.on('connection', function(socket) {
  // this connection has already been established
  // no other handler is required
});

// on the client
var socket = io.connect();
socket.on('connect', function() {
  // the connection has been established
});
于 2013-10-04T00:04:17.037 に答える