0

私の場合、socket.io を使用してソケット経由でリポジトリを同期する必要があります。私のローカル マシンでは、問題なく動作しています (遅延のない高帯域幅...)。しかし、私はより大きなオブジェクトをサーバーに送信することを考えました。これらのオブジェクトの送信中に、クライアントでロックが必要になります。

したがって、最初に考えられる方法は、「gotData を発行して」クライアントでリッスンすることです。しかし、クライアント側からのみ完了を検出する方法はありますか?

例 DUMMY の例のように:

//Some dummy code
socket.emit('syncObject', oObj).complete(function(evt){
    console.log('finished emit');
});
4

1 に答える 1

0

これはちょっとしたハックですが、emitにコールバックを含めて、メッセージを受信したらすぐにサーバー側で呼び出すことができます。

クライアント

socket.emit('syncObject', oObj, function() {
  console.log('got message');
});

サーバ

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

io.sockets.on('connection', function (socket) {
  socket.on('syncObject', function (obj, cb) {
    cb();
    // handle obj data
  });
});
于 2013-02-21T19:28:16.467 に答える