1

DDPの紹介記事で、何でも公開できると読みましたが、どこかで読んだことがあります(たとえば、このStackoverflowのコメント任意のデータを公開し、HTMLを自動的に更新する)、コレクションのみを公開できます。

では、真実はどこにあるのでしょうか。コレクション以外のものを公開できれば、今のところ例が見つからないので、例を見てみたいと思います。

4

2 に答える 2

1

ドキュメントから: http://docs.meteor.com/#meteor_publish

パブリッシュ関数は Collection.Cursor を返すことができます。この場合、Meteor はそのカーソルのドキュメントをパブリッシュします。Collection.Cursors の配列を返すこともできます。この場合、Meteor はすべてのカーソルを公開します。

したがって、現時点では、カーソルを介してのみコレクションを返すことができます (の結果Collection.find())。

他のデータを返すには、sockjs ストリーム (meteor がサーバーとの通信に使用するソケット ライブラリ) をハックする必要があります。これは、将来のバージョンの meteor との互換性を保証するものではないことに注意してください。Sockjs は meteor がサーバー間 (有線) で通信するために使用するライブラリです。

from任意のデータを公開し、HTMLを自動更新*

クライアント側のjs

sc = new Meteor._Stream('/sockjs');   
sc.on('message', function(payload) {
    var msg = JSON.parse(payload);
    Session.set('a_random_message', JSON.stringify(msg.data));   
});

Template.hello.greeting = function () {
    return Session.get('a_random_message');   
}; 

サーバーサイドjs

ss = new Meteor._StreamServer();

ss.register(function (socket) {
    var data = {socket: socket.id, connected: new Date()}
    var msg = {msg: 'data', data: data};

     // Send message to all sockets (which will be set in the Session a_random_message of the client
     _.each(ss.all_sockets(), function(socket) {
         socket.send(JSON.stringify(msg));
     });   
}); 
于 2013-05-23T00:31:03.237 に答える
1

流星群も見ることができます。下記参照。

大気を介して流星の流れを追加したと仮定します-mrt add streams

sc = new Meteor.Stream('hello');

if(Meteor.isServer) {
  Meteor.setInterval(function() {
    sc.emit('a_random_message', 'Random Message: ' + Random.id());
  }, 2000);

  Meteor.permissions.read(function() { return true });
}

if(Meteor.isClient) {
  sc.on('a_random_message', function(message) {
    Session.set('a_random_message', message);
  });

  Template.hello.greeting = function () {
    return Session.get('a_random_message');   
  };
}
于 2013-07-01T14:01:20.543 に答える