与 Google App Engine 连接的即时 XMPP 客户端

Posted

技术标签:

【中文标题】与 Google App Engine 连接的即时 XMPP 客户端【英文标题】:On-the-fly XMPP client to connect with Google App Engine 【发布时间】:2015-06-29 07:52:57 【问题描述】:

通过查看 App Engine 的 XMPP 文档https://cloud.google.com/appengine/docs/go/xmpp/

Google 似乎只提供了一个 客户端 来托管在 appengine 上,而不是 XMPP 服务器本身。为此,需要使用不同的主机(例如 GTalk)

    我理解正确吗? 如果是这样 - 这是否意味着如果我想要基于即时会话的客户端,我必须托管自己的 xmpp 服务器(ejabbered)? 如果这也是正确的,那么在基于会话的轻量级客户端中是否存在 ejabbered 机制? (即许多要快速创建和销毁 - 只需要在会话期间响应出席请求,将永远不会再次使用) 是否有稳定的、可扩展的主机可以为我执行此操作,因此我无需担心 ejabbered 服务器出现故障(无论它是托管在 AWS、GCE 等上吗。到目前为止,AppEngine 的优点在于我从来不用担心)

谢谢!

【问题讨论】:

【参考方案1】:

解决您的问题:

    我理解正确吗?

以前你必须使用 Google Talk XMPP 服务,但我想,是的,现在你需要部署自己的服务器。

    如果是这样 - 这是否意味着如果我想要基于即时会话的客户端,我必须托管自己的 xmpp 服务器(ejabbered)?

不确定“即时”会话是什么意思,但是是的,您似乎需要自己的服务器。

    如果这也是正确的,那么在基于会话的轻量级客户端中是否存在 ejabbered 机制? (即许多要快速创建和销毁 - 只需要在会话期间响应出席请求,将永远不会再次使用)

不确定你的意思。 XMPP 是一种连接协议。这意味着会话与打开的 TCP 连接相关联。也就是说,ejabberd SaaS 允许在您断开连接时维持会话一段时间(专为移动设备设计)。您可以简单地重新连接它。 顺便说一句:在 XMPP 中,您不会“响应出席请求”。反之亦然:您的存在会广播给您的联系人(名册)

    是否有稳定的、可扩展的主机可以为我执行此操作,因此我无需担心 ejabbered 服务器出现故障(无论它是托管在 AWS、GCE 等上吗。到目前为止,AppEngine 的优点在于我从来不用担心这个)

使用 ejabberd 最简单(并且可以说是最便宜)的方法是使用 ejabberd SaaS,由 ejabberd 的开发者 ProcessOne 管理(我是 ejabberd 的开发者和 ProcessOne 的创始人)。

【讨论】:

谢谢米凯尔!您是否提供免费或非常便宜的每月可以支持极少 jab 的 ejabberd SaaS 测试版?现在我的产品不在研发阶段。归根结底,我所说的“即时”和“会话”类似于 Google 构建其 Channel API 的方式——发布令牌并让用户匿名连接但获得授权。好消息是,在 XMPP 中,您的花名册中的存在被广播了!我担心拥有一个具有非常大名单的机器人的开销,因此它可以检测存在 - 但由于每个用户都向机器人宣布,它只需要一种方式。酷! ejabberd-Saas 不是共享主机,因此在硬件、带宽、IP 地址等方面的成本无法降低。 ejabberd 支持匿名登录,这可能是你需要的。在任何情况下,您始终可以在笔记本电脑上使用 ejabberd 社区进行开发以节省成本。 谢谢!如果您有兴趣,请向***.com/questions/31205838/max-users-in-xmpp-roster 添加另一个 XMPP 问题;)

以上是关于与 Google App Engine 连接的即时 XMPP 客户端的主要内容,如果未能解决你的问题,请参考以下文章

使用 GRPC 与 Google Cloud Run 通信的 Google App Engine 给出“错误:14 不可用:连接已断开”

Google App Engine 和 Cloud SQL:在“读取初始通信数据包”时失去与 MySQL 服务器的连接

使用 Google APP Engine 的 Cloud SQL 连接限制

是否可以将 Google App Engine 与 Google Cloud *** 一起使用?

连接 Google App Engine 和 Google Compute Engine

建立数据库连接时出错:Google App Engine Deploy