3

動作する Google チャネル AP を作成しました。すべてのクライアントにメッセージを送信したいと考えています。

私は2つのサーブレットを持っています。1 つ目はチャネルを作成し、クライアントに と を伝えuseridますtoken。2 番目のものはによって呼び出されhttp post、メッセージを送信する必要があります。

クライアントにメッセージを送信するには、次を使用します。

channelService.sendMessage(new ChannelMessage(channelUserId, "This is a server message!"));

これにより、メッセージは 1 つのクライアントにのみ送信されます。どうすればこれを全員に送信できますか?

チャネルを作成し、すべての ID のメッセージを送信するために使用するすべての Id を保存する必要がありますか? Id を 2 番目のサーブレットに渡すにはどうすればよいですか?

4

2 に答える 2

3

これは古い質問ですが、Channel APIを使用してパブリッシュ/サブスクライブモデルを実装するオープンソースプロジェクトを終了しました。つまり、複数のユーザーに1つのトピックをサブスクライブさせることができ、それらすべてのサブスクライバーに次のタイミングで通知されます。誰でもトピックにメッセージを公開します。また、必要に応じて自動メッセージ永続化や、他のサブスクライバーがそのメッセージを受信するたびにサブスクライバーに通知できる「受信確認」などの優れた機能もあります。https://github.com/adevine/gaewebpubsub#gae-web-pubsubを参照してください。Apache2.0ライセンスの下でライセンスされています。

于 2012-12-06T04:09:12.203 に答える
3

Channel API を使用して、1 つのチャネルを作成し、多数のサブスクライバーを持つことはできません。サーバーは個々の JavaScript クライアントに対して一意のチャネルを作成するため、同じクライアント ID を持っている場合、メッセージは 1 つのみで受信されます。

同じメッセージを複数のクライアントに送信したい場合は、要するに、アクティブなクライアントを追跡し、それらすべてに同じメッセージを送信する必要があります。

このアプローチが恐ろしく面倒に聞こえる場合は、プッシュ通知メッセージに PubNub を使用することを検討してください。PubNub では、1 つのチャネルを簡単に作成して多くのサブスクライバーを持つことができます。ほとんどすべてのプラットフォームやデバイスをサポートしているため、Google App Engine で実行するのはそれほど難しくありません。

于 2012-09-29T11:27:38.473 に答える