【问题标题】:Can GAE act as an XMPP server?GAE 可以充当 XMPP 服务器吗?
【发布时间】:2011-01-08 15:02:09
【问题描述】:

我正在考虑使用 GAE 构建多人游戏。当玩家 A 出手时,我想记录下详细信息,然后让玩家 B 知道这一举动。

我认为我可能会在我的客户端中获得一些开源 XMPP 库,并在可能的情况下通知我的应用程序的存在?我不想强迫玩家注册像 google talk 这样的服务,所以我会根据会话 ID 即时生成 jid。

希望收到您的来信!

谢谢

【问题讨论】:

    标签: google-app-engine xmpp


    【解决方案1】:

    您将无法将您的 gae 应用程序设置为 xmpp 服务器,因为您无法打开套接字 - 这样做受到 api 的限制。

    但是,您不需要运行 xmpp 服务器来实现您想做的事情。您可以使用 appengine api 中提供的 XMPP 库使您的应用程序成为您的游戏“客户端”与之交谈的客户端,以在此处查看 python api:http://code.google.com/appengine/docs/python/xmpp/。并非所有游戏客户端都必须是 gtalk 客户端,但它们需要能够桥接到 gtalk,我相信大多数人都能做到。

    这里有一个简短的例子:http://code.google.com/appengine/articles/using_xmpp.html

    【讨论】:

    • 该示例假设您的用户已经有一个 xmpp 客户端和 id。我认为 OP 希望它在没有这种假设的情况下工作 - 游戏本身就是客户端,并且会生成匿名 id。这种情况也行吗?
    • 简短的回答是“否”或“是”,但他需要在 GAE 之外运行自己的 xmpp 服务器来创建这些匿名 xmpp id,因为 GAE 客户端无法创建新的 id。如果您选择创建匿名 xmpp id,您可能会这样做,因为您有一个自定义客户端,并且正在通过 xmpp 隧道传输您的游戏协议,对吧?如果这个想法是使用 GAE 为 xmpp 服务器供电,那么由于无套接字规则而无法正常工作。但是你可以使用外部 xmpp 服务器并使用 GAE 来做转向引擎。
    • 我认为 GAE API 可能支持 XMPP 服务器命令,因为文档表明 GAE 可以是 [appid]@appspot.com 或 [anything]@[app-id].appspotchat.com .但在最终了解 XMPP 的工作原理后,我发现 GAE 只是一个客户端。否则,是的,XMPP 应该是一个隧道,只是为了绕过 GAE 上没有套接字的限制。我需要一种无需轮询即可立即通知我的玩家的方法。
    • 起初我问为什么 GAE 支持 XMPP 消息传递,因为它能够发送和接收电子邮件(范围更广)。现在我看到了 XMPP 的好处。如果它确实获得了庞大的用户群,我期待构建异步消息传递实现。但如果 GAE 以某种方式启用套接字,我知道我将使用什么。
    • @dar 快 6 年了。 gae 现在可以充当完整的 xmpp 服务器了吗?
    【解决方案2】:

    也许值得花 15 分钟来了解一下亚马逊的弹性计算云 (EC2) 您可以以每小时约 2 美分的成本部署云服务器。 这是一个很好的概述 http://www.youtube.com/watch?v=ZAB8wCg9MyE&feature=player_embedded

    【讨论】:

    • 谢谢。我现在正在玩 EC2 micro,它与 ejabberd 配合得很好。
    • GAE 现在也有用于推送的通道 API,但目前只有 javascript。
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 2012-10-11
    • 2015-08-26
    • 2015-05-13
    相关资源
    最近更新 更多