2011-06-01 49 views
7

我正在開發一個不駐留在AppEngine上的應用程序,它具有將聊天功能放入通信Web客戶端(瀏覽器+ javascript)和移動客戶端(ActionScript)的功能。 我正在考慮在AppEngine上使用XMPP協議(然後只使用服務器來訪問Google上的聊天功能,並將其他服務器留在我的服務器上)。你告訴我這是否可能? Channel API有什麼不同? 謝謝Google App Engine的XMPP和Channel API之間的區別

回答

1

據我瞭解,ChannelAPI是谷歌XMPP服務背後的支柱。如果您想異步發送/接收(服務器推送)行客戶端JavaScript和託管在GAE上的Web應用程序之間的JSON對象,則需要使用ChannelAPI。

0

XMPP API有助於您的應用和XMPP客戶端(如Google Talk)之間的通信。

Channel API用於使用Web套接字將數據從您的應用程序推送到Web瀏覽器。

任一個都可以用作聊天應用程序的一部分;選擇取決於聊天客戶端是否要使用XMPP客戶端或Web瀏覽器。

+0

Drew,Channel API不使用網絡套接字(至少現在),它通過Google的GTalk服務渠道 – 2011-06-01 23:41:38

+0

「The Channel API用於使用Web套接字將數據從您的應用程序推送到Web瀏覽器。「我認爲正在模擬Web Sockets,我相信他們使用iframe和回調進行實時通信,而不是web套接字。 – 2011-06-02 16:23:14

1

通道API使用所謂的XPC通過IFrame與Google的GTalk客戶端進行通信。這個客戶端促進瀏覽器和你的應用程序之間的雙向通信。爲您提供的JavaScript庫被鬆散地映射到當前的WebSocket's API,並且應該輕鬆地從Channel API轉換到WebSockets,一旦/如果它在AppEngine上受支持。

我相信XMPP是Channel API的骨幹,是功能的超集。例如,XMPP API支持Invitations

因此,您可以使用Channel API(瀏覽器)和XMPP(無處不在)構建聊天功能。

10

XMPP和Channel API可以解決堆棧兩個不同級別的問題。

XMPP描述了從一個端點到另一個端點獲取消息的通用方法。現有用於Windows,Linux,OSX等的XMPP客戶端,並且現有的XMPP客戶端庫編寫爲C++,Python, javascript等。如果您只是想向已知擁有XMPP客戶端的用戶傳遞文本,請使用XMPP App Engine API是顯而易見的解決方案;如果您希望對客戶體驗有很多控制權並且有時間花費在其上,那麼使用現有的XMPP庫和製作自定義客戶端可能是一個不錯的選擇。

Channel API描述了用於發送消息的服務器端方法和用於接收消息的客戶端方法。 App Engine實現提供了一個javascript客戶端,這對於web應用來說是一個棘手的部分,因爲它需要持久的HTTP連接。您可以使用任何您想要的方式(在App Engine中使用Google Talk堆棧; XMPP在後端使用JSON並通過前端的長輪詢HTTP連接)在其他平臺上重新實現Channel API。

最根本的問題是您的實現需要多少抽象。 Channel API比XMPP API抽象得多,並提供了一個客戶端庫,以便通過JavaScript輕鬆實現連接。

相關問題