私はいくつか持っており、次のように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 個のイベントが発生します。
コレクションを確認しましたが、重複していません。同じソケットに複数のチャネルがありますが、これが問題になる可能性がありますか?