1

すべてのクライアントに毎秒1つのメッセージをブロードキャストしたいと思います(カスタムハートビートメカニズムと考えてください)。

これで、NodeJSアプリが起動し、ソケットが作成され、クライアントアプリから接続すると、ハートビートメッセージがブロードキャストされます。私はまだクライアントアプリケーションを開発しています。つまり、常にF5キーを押して、アプリケーションをリロードします。新しいクライアントSocketIO接続はロード時に作成され、これにより、ハートビートメッセージが1メッセージ/秒よりもはるかに高いレートでクライアントアプリに送信されます。

コードについて特別なことは何もありません-サーバー側:

var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.listen(8080);

io.sockets.on('connection', function(socket) {
  ...
  setInterval(function() {
    console.info('broadcasting heartbeat');
    socket.broadcast.emit('heartbeat', /* custom heartbeat*/);
  }, 1000);
  ...
});

クライアント側:

var socket = io.connect('localhost', { 'reconnect': false, port: 8080 });
socket.on('heartbeat', function(data) { console.log('heartbeat'); });

誰かが私に何が悪いのかアドバイスをくれますか?ありがとう

4

1 に答える 1

3

毎回インターバルを起動する必要はありません。あなたはintervalIDを保存することができ、clearInterval(INTERVAL);それが必要でないときにそれをクリアすることさえできます。

var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.listen(8080);

var INTERVAL;

io.sockets.on('connection', function(socket) {
  ...
  if (!INTERVAL) {
    INTERVAL = setInterval(function() {
      console.info('broadcasting heartbeat');
      socket.broadcast.emit('heartbeat', /* custom heartbeat*/);
    }, 1000);
  }
  ...
});
于 2013-03-26T21:44:24.463 に答える