我正在開發一個不駐留在AppEngine上的應用程序,它具有將聊天功能放入通信Web客戶端(瀏覽器+ javascript)和移動客戶端(ActionScript)的功能。 我正在考慮在AppEngine上使用XMPP協議(然後只使用服務器來訪問Google上的聊天功能,並將其他服務器留在我的服務器上)。你告訴我這是否可能? Channel API有什麼不同? 謝謝Google App Engine的XMPP和Channel API之間的區別
回答
據我瞭解,ChannelAPI是谷歌XMPP服務背後的支柱。如果您想異步發送/接收(服務器推送)行客戶端JavaScript和託管在GAE上的Web應用程序之間的JSON對象,則需要使用ChannelAPI。
XMPP API有助於您的應用和XMPP客戶端(如Google Talk)之間的通信。
Channel API用於使用Web套接字將數據從您的應用程序推送到Web瀏覽器。
任一個都可以用作聊天應用程序的一部分;選擇取決於聊天客戶端是否要使用XMPP客戶端或Web瀏覽器。
通道API使用所謂的XPC通過IFrame與Google的GTalk客戶端進行通信。這個客戶端促進瀏覽器和你的應用程序之間的雙向通信。爲您提供的JavaScript庫被鬆散地映射到當前的WebSocket's API,並且應該輕鬆地從Channel API轉換到WebSockets,一旦/如果它在AppEngine上受支持。
我相信XMPP是Channel API的骨幹,是功能的超集。例如,XMPP API支持Invitations
因此,您可以使用Channel API(瀏覽器)和XMPP(無處不在)構建聊天功能。
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輕鬆實現連接。
- 1. onmessage Google App Engine(Java)Channel API
- 2. 哪一個更適合Google App Engine中聊天系統的XMPP或Channel API
- 3. Google App Engine和Google Calendar API
- 4. 在Google App Engine中使用Channel API時的壓縮
- 5. Channel API中的「未知SID」錯誤Google App Engine - Python客戶端
- 6. Google App Engine中的父級和引用屬性之間有什麼區別?
- 7. Google雲中的Google Compute Engine,App Engine和Container Engine有什麼區別?
- 8. Google CalDAV API和Google Calendar API之間的區別
- 9. 域別名和Google App Engine
- 10. Google App Engine中的XMPP支持
- 11. 使用Google App Engine的xmpp客戶端
- 12. 羣聊與Google App Engine的XMPP
- 13. App Engine和Google Drive API
- 14. 各種XMPP MessageType(s)之間的區別?
- 15. 令牌到期後Google App Engine Channel API重新連接
- 16. Google App Engine任務之間的暫停
- 17. Google App Engine項目之間的安全
- 18. MSAzure VM和APP之間的區別
- 19. Google API庫之間的區別:google-api-dotnet-client與google-gdata
- 20. Google App Engine和Google Storage
- 21. Google App Engine與Google Compute Engine有什麼區別?
- 22. 擁有一對多關係和擁有一對多雙向關係(Google App Engine Java Api)之間的區別
- 23. Google NFC API和Open NFC API之間的區別?
- 24. Google App Engine中的Query類和Gqlquery類有什麼區別?
- 25. Java for Google App Engine和Java EE的核心區別是什麼?
- 26. Android和Google App Engine之間的間歇性丟失請求
- 27. Google App Engine和dos.xml
- 28. Google App Engine和Android?
- 29. hadoop和google analytics之間的區別
- 30. Google Drive API中的comment.Patch和comment.Update之間的區別
Drew,Channel API不使用網絡套接字(至少現在),它通過Google的GTalk服務渠道 – 2011-06-01 23:41:38
「The Channel API用於使用Web套接字將數據從您的應用程序推送到Web瀏覽器。「我認爲正在模擬Web Sockets,我相信他們使用iframe和回調進行實時通信,而不是web套接字。 – 2011-06-02 16:23:14