1

私はいくつか持っており、次のようにMongoDb Capped Collections新しいエントリを(別のプロセスから)自分のページにストリーミングしようとしていますSocketIO

サーバ側:

...
var TickerSchema = new Mongoose.Schema({
    bid : { type : Number },
    ask : { type : Number },
    mid : { type : Number },
    last_price : { type : Number },
    timestamp : { type : Date }
}, { capped: { size: 5242880, max: 1000, autoIndexId: true }});

var tickerStream = Ticker.find().tailable().stream();

ioserver.sockets.on('connection', function(socket){
    clientsocket = socket;

    tickerStream.on('data', function (doc) {    
        clientsocket.emit('ticker', doc);
    }).on('error', function (err) {
      console.log('error: '+err);
    }).on('close', function () {
      // the stream is closed
      system.debug('close');
    });
...

クライアント側:

var socket = io.connect('http://localhost');

  function TickerController($scope, $http, $window)
  {
    $scope.ticker = null;

    $scope.init = function(){

    }

    $window.socket.on('ticker', function(ticker){
      console.log(ticker);
      $scope.$apply(function(){
        $scope.ticker = ticker;
      });
    });

  }

しかし、アプリを実行すると、新しいイベントが発生しますが、1 つの新しいドキュメントが挿入されるのではなく、2 ~ 3 個のイベントが発生します。

コレクションを確認しましたが、重複していません。同じソケットに複数のチャネルがありますが、これが問題になる可能性がありますか?

ここに画像の説明を入力

4

0 に答える 0