【问题标题】:Differences between XMPP and Channel API for Google App EngineXMPP 和 Google App Engine 的 Channel API 之间的差异
【发布时间】:2011-09-06 12:28:41
【问题描述】:

我正在开发一个不驻留在 AppEngine 上的应用程序,它具有聊天功能,可用于通信网络客户端(浏览器 + javascript)和移动客户端(ActionScript)。 我正在考虑在 AppEngine 上使用 XMPP 协议(​​然后仅将服务器用于 Google 上的聊天功能,其余部分仍留在我的服务器上)。你告诉我这是否可能? 与 Channel API 有什么区别? 谢谢

【问题讨论】:

    标签: google-app-engine xmpp channel-api


    【解决方案1】:

    XMPP 和 Channel API 在堆栈的两个不同级别解决问题。

    XMPP 描述了一种从一个端点到另一个端点获取消息的通用方法。现有的 XMPP 客户端适用于 Windows、Linux、OSX 等,并且现有的 XMPP 客户端库编写为 C++Pythonjavascript 等。如果您只想将文本传递给您已经认识的用户有一个 XMPP 客户端,使用 XMPP App Engine API 是显而易见的解决方案;如果您想对客户端体验进行大量控制并有时间花在上面,那么使用现有的 XMPP 库并制作自定义客户端可能是一个不错的选择。

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

    基本问题是您的实现需要多少抽象。 Channel API 比 XMPP API 抽象得多,并提供了一个客户端库,使通过 javascript 的连接变得容易。

    【讨论】:

      【解决方案2】:

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

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

      所以,是的,您可以使用 Channel API(浏览器)和 XMPP(无处不在)来构建聊天功能。

      【讨论】:

        【解决方案3】:

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

        Channel API 用于使用网络套接字将数据从您的应用推送到网络浏览器。

        两者都可以用作聊天应用程序的一部分;具体选择取决于聊天客户端是使用 XMPP 客户端还是 Web 浏览器。

        【讨论】:

        • Drew,Channel API 不使用网络套接字(至少现在是这样),它通过 Google 的 GTalk 服务进行通道
        • “Channel API 用于使用 Web 套接字将数据从您的应用程序推送到 Web 浏览器。”我认为是在模拟 Web 套接字,我相信他们使用 iframe 和回调来进行实时通信,而不是 Web 套接字。
        【解决方案4】:

        据我了解,ChannelAPI 是 Google XMPP 服务背后的支柱。如果您想在客户端的 JavaScript 和托管在 GAE 上的 Webapp 之间异步发送/接收(服务器推送)行 JSON 对象,那么 ChannelAPI 是您的最佳选择。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-06-03
          • 1970-01-01
          • 1970-01-01
          • 2014-02-01
          • 1970-01-01
          • 2017-12-07
          • 1970-01-01
          相关资源
          最近更新 更多