2010-10-03 81 views

回答

6

找到一個偉大的教程使用XMPP如果你談論的是HTTP,簡單的答案是,GAE目前不支持它。我想你所問的有時叫做BOSH。一旦WebSockets變得更加普遍,它們將成爲解決這個問題的絕佳解決方案。

與此同時,您可能想看看XMPP。使用XMPP可以避免輪詢。谷歌已經宣佈了一個Channel API(尚未發佈),它基本上可以爲您提供與websockets相同的功能。

2

你可能已經看到了一些聊天室的例子...

既然你只是想將消息發送到用戶的數據存儲區(提示:IMProperty是偉大的,存儲這些數據),這是早晚的事情直接發送消息:

from google.appengine.api import xmpp 
# `destination` is a list of JIDS 
# `message` is a normal unicode string 
xmpp.send_message(destination, message) 

您可以通過尼克·約翰遜here

+0

因此,當我將聊天集成到我的應用程序中時,我可以使用xmpp和jids將消息發送給用戶:whatever @ upserip:userport。然後我的應用程序發送我的消息作爲一個http請求。正確?我可以像那樣遍歷NAT嗎? – Laures 2010-10-03 20:22:52

+0

@Laures現在你讓我感到困惑。根據我的理解,你要找的其實是羅伯特的口號,而不是我的。我會提高他的答案。 – 2010-10-03 20:50:22

+0

好的......現在我很困惑。我想接收來自客戶的信息並將接收到的數據分發給所有客戶。我想不做輪詢。當頻道api出局時,這應該很簡單,但爲什麼現在它變得不可行? (也許我應該提到這是我的第一個gae或網絡相關項目) – Laures 2010-10-04 07:20:18

0

注意,你現在可以使用這個App Engine的通道API:http://code.google.com/appengine/docs/python/channel/

您可以使用給定的客戶端創建一個通道:當你想更新客戶端然後

channel.create_channel(client_id) 

,發送消息:

channel.send_message(client_id, message) 

基本上每個客戶將獲得一個持久連接,你可以把信息通過。

相關問題