2012-04-13 64 views
0

我一直在努力學習Google App Engine的Channel API。GAE Channel API消息只廣播給一個客戶端?

我試圖做一個簡單的聊天應用程序,但我遇到了問題。

這通常是我所做的。

服務器打開一個靜態信道:

token = channel.create_channel('bigboys') 

客戶JS連接通道具有:

var channel = new goog.appengine.Channel(token) 

我沒有使用谷歌應用程序引擎的用戶。我不希望客戶必須登錄。

所以我的問題是,聊天應用程序並不真正的工作,只有一個客戶端可以加入該頻道。我知道每個渠道規則都有一個客戶端ID。那麼如何在一個「聊天室」中支持多個客戶?

回答

7

想象一個通道是一個客戶端(瀏覽器)和您的服務器之間的連接。

如果您有聊天室,則需要爲每個客戶端設置一個頻道。在服務器端需要一些東西來跟蹤聊天室中的所有客戶端以及每個客戶端的通道。當您發送消息時,您需要在聊天室中的每個客戶端頻道上發送消息。

+0

OKAY。這更有意義,那麼我的解釋 – AlexCheuk 2012-04-13 18:19:05

+0

那麼跟蹤所有監聽'廣播'的客戶端的最佳方式是什麼?你會讓他們留在Memcache嗎?數據存儲? – Chuck 2013-03-11 14:41:17

+2

我會在數據存儲中爲'廣播'存儲所有客戶端列表中的實體。將使用memcache減少對數據存儲的命中(ndb會自動執行此操作)。 – dragonx 2013-03-11 20:56:42