XMPP和Google App Engine的通道API之间的区别

7

我正在开发一款应用程序,它不驻留在AppEngine上,具有实现Web客户端(浏览器+ JavaScript)和移动客户端(ActionScript)之间聊天功能的功能。我考虑在AppEngine上使用XMPP协议(然后仅使用Google的聊天服务器,并将其余部分留在我的服务器上)。请问这种做法可行吗?与通道API有何区别?

4个回答

10

XMPP和Channel API解决了堆栈的两个不同层次上的问题。

XMPP描述了从一个端点到另一个端点传递消息的通用方式。已经存在适用于Windows、Linux、OSX等系统的XMPP客户端,以及使用C++Pythonjavascript等语言编写的现有XMPP客户端库。如果您只想将文本传递给已知拥有XMPP客户端的用户,则使用XMPP App Engine API是显而易见的解决方案;如果您想对客户端体验拥有大量控制权并且有时间进行开发,则使用现有的XMPP库并创建自定义客户端可能是一个不错的选择。

Channel API描述了一种服务器端发送消息和客户端接收消息的方法。App Engine实现提供了一个javascript客户端,这对于Web应用程序来说是棘手的部分,因为它需要一个持久的HTTP连接。您当然可以使用任何您喜欢的方法在其他平台上重新实现Channel API(对于App Engine,我们使用Google Talk堆栈;在前端使用JSON长轮询HTTP连接,在后端使用XMPP)。

根本问题在于您需要多少抽象来实现。Channel API比XMPP API更抽象,并提供客户端库使连接javascript更加容易。


1
据我所知,ChannelAPI是Google XMPP服务背后的支柱。如果您想在客户端JavaScript和托管在GAE上的Web应用程序之间异步发送/接收(服务器推送)行JSON对象,则ChannelAPI是正确的选择。

1

Channel API使用XPC来通过IFrame与Google的GTalk客户端进行通信。该客户端促进了浏览器和您的应用程序之间的双向通信。为您提供的JavaScript库松散地映射到当前WebSocket's API,并且应该可以轻松过渡从Channel API到WebSockets,一旦/如果它在AppEngine上得到支持。

我相信XMPP是Channel API的骨干,并且是功能的超集。例如,XMPP API支持邀请

因此,是的,您可以使用Channel API(浏览器)和XMPP(任何地方)构建聊天功能。


0

XMPP API 可以促进您的应用与 XMPP 客户端(如 Google Talk)之间的通信。

Channel API 用于通过 Web sockets 将数据从您的应用程序推送到 Web 浏览器。

无论哪种方式都可以作为聊天应用的一部分;选择取决于聊天客户端是使用 XMPP 客户端还是 Web 浏览器。


Drew,Channel API目前不使用Web Socket协议,它是通过Google的GTalk服务进行通道传输的。 - Erick Fleming
“Channel API 用于通过 Web Sockets 将数据从您的应用程序推送到 Web 浏览器。” 我认为它是模拟 Web Sockets,我相信它们使用 iframes 和回调来进行实时通信,而不是 Web Sockets。 - Mario César

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接