2012-09-29 114 views
3

我創建了一個工作的Google Channel AP,現在我想向所有客戶端發送消息。Google Channel API向所有客戶端發送消息

我有兩個servlet。第一個創建通道並告訴客戶端useridtoken。第二個由http post調用,並應發送消息。

將消息發送到客戶端,我用:

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

這會發送消息只是一個客戶端。我怎麼能把這個發送給所有人?

我是否需要存儲每個用於創建頻道併爲每個ID發送消息的ID?我怎麼能通過ID到第二個servlet?

回答

3

使用通道API不可能創建一個通道,然後有許多訂閱者。服務器爲individual JavaScript clients創建一個唯一的通道,所以如果您具有相同的客戶端ID,則只能收到一個消息。

如果你想發送相同的消息給多個客戶端,簡而言之,你將不得不跟蹤活動客戶端並將相同的消息發送給所有客戶端。

如果這個方法聽起來很嚇人而凌亂,考慮使用PubNub爲您推送通知的消息,在這裏你可以輕鬆地創建​​。要讓它在Google App Engine上運行並不難,因爲它們幾乎支持任何platform or device

3

我知道這是一個老問題,但我剛剛使用通道API來實現發佈/訂閱模式的一個開源項目,即你可以有多個用戶訂閱一個主題,然後將所有這些用戶將在任何人發佈消息時通知該主題。它還具有一些很好的功能,例如自動消息持久性(如果需要)以及「回執」,其中訂閱者可以在其他訂閱者收到該消息時得到通知。見https://github.com/adevine/gaewebpubsub#gae-web-pubsub。在Apache 2.0許可下獲得許可。

+0

感謝您的提示。 – hofmeister

相關問題