1

私はノードで最初のステップを実行し、簡単なチャットアプリを作成しています。nodejsが新しいソケット接続を取得するたびに、単純な配列に保存されます...私の問題は、彼の参照がそこに残っているため、接続が閉じられたときです...彼女にイベントを発行する前に、接続が有効かどうかを確認するにはどうすればよいですか? 、クラッシュを回避しますか?

4

1 に答える 1

4

socket.ioWebサイトの例を使用します。

var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {
  var tweets = setInterval(function () {
    getBieberTweet(function (tweet) {
      socket.volatile.emit('bieber tweet', tweet);
    });
  }, 100);

  socket.on('disconnect', function () {
    clearInterval(tweets);
  });
});

接続時に、ソケット変数を渡します。これは各クライアントに固有であるため、socket.emitは1つのクライアントにのみ送信するか、ブロードキャストは送信者を除くすべてのクライアントに送信します。

socket.on('disconnect', function () {
  clearInterval(tweets);
});

間隔がどのようにクリアされるかに注意してください。繰り返しますが、これは特定の「ソケット」で発生するため、クライアント固有であり、次のようなことができます。

socket.on('disconnect', function () {
  socket.broadcast.emit('disconnected', {user: "film42", status: "disconnected from server"});
});

Socket.IOはハートビート/切断を適切に処理するため、切断を処理するだけで余分なことを心配する必要はありません。私はそれがあなたのために働くことを願っています:)。

于 2012-11-17T21:03:43.310 に答える