8

コレクションを使用せずに、サーバーからすべてまたは一部のクライアントにイベントを送信する方法はありますか?

カスタムデータを含むイベントをクライアントに送信したいと思います。流星はコレクションでこれを行うのに非常に優れていますが、この場合、追加された複雑さとストレージは必要ありません。

サーバーでは、Mongoストレージやローカルコレクションは必要ありません。クライアントは、サーバーからイベントを受信したことを警告するだけで、データに応じて動作します。

これはsockjsを使用するとかなり簡単ですが、サーバーからsockjsにアクセスするのは非常に困難です。

Meteor.Errorこれに似た何かをします。

4

4 に答える 4

4

パッケージは非推奨になり、バージョン0.9を超えると機能しなくなりました

もともとclients-server-clientsからのメッセージをブロードキャストすることを目的とした次のパッケージを使用できます

http://arunoda.github.io/meteor-streams/

コレクションなし、mongodbの背後なし、使用法は次のとおりです(テストされていません):

stream = new Meteor.Stream('streamName'); // defined on client and server side

if(Meteor.isClient) {
    stream.on("channelName", function(message) {
      console.log("message:"+message);
    });
}

if(Meteor.isServer) {
    setInterval(function() {
      stream.emit("channelName", 'This is my message!');
    }, 1000);
}
于 2014-04-06T04:33:17.683 に答える
2

コレクションを使用する必要があります。

コレクションを作成し、それに単一のプロパティを追加して更新するだけの場合、「複雑さとストレージの追加」は要因ではありません。

コレクションは、サーバーとクライアント間のデータ通信の単なる形であり、たまたまmongoに基づいて構築されています。これは、データベースのように使用する場合に非常に便利です。しかし、最も基本的には、「Xと呼ばれる情報を保存したい」という言い方にすぎません。これは、利用したいパブリッシュ/サブスクライブアーキテクチャに接続します。

将来的には、Mongoに加えて他のデータベースが公開される予定です。ある段階で、あなたが提案しているような最も基本的な機能にコレクションを分解するスマートパッケージがあることがわかりました。多分あなたはそれを書くことができます!

于 2012-12-26T19:02:59.823 に答える
1

@Ruiと、メッセージを送信するためだけにコレクションを使用するという事実は面倒だと感じています。
同時に、そのようなメッセージをいくつか送信したら、設定などの名前のコレクションを保持しておくと便利です。


于 2015-07-24T15:22:59.150 に答える
1

私が見つけた最高のパッケージはStreamyです。それはあなたがすべての人、またはただ一人の特定のユーザーに送ることを可能にします

https://github.com/YuukanOO/streamy

meteor add yuukan:streamy

みんなにメッセージを送る:

Streamy.broadcast('ddpEvent', { data: 'something happened for all' });

クライアントでメッセージを聞く:

// Attach an handler for a specific message
Streamy.on('ddpEvent', function(d, s) {
  console.log(d.data);
});

1人のユーザーにメッセージを送信する(IDで)

var socket = Streamy.socketsForUsers(["nJyQvECmkBSXDZEN2"])._sockets[0]
Streamy.emit('ddpEvent', { data: 'something happened for you' }, socket);
于 2016-12-23T16:47:05.043 に答える