【问题标题】:Can google app engine be used as a socket server?谷歌应用引擎可以用作套接字服务器吗?
【发布时间】:2010-02-13 06:45:39
【问题描述】:

我的虚拟主机有针对套接字服务器的规则,所以我一直在研究 GAE。

有人知道可以在 GAE 上成功运行的套接字服务器吗?我将它用于闪存,所以如果可能的话,像 smartfox 这样的东西会很棒。

谢谢。

【问题讨论】:

    标签: flash google-app-engine sockets multiplayer


    【解决方案1】:

    Google App Engine 现在有 Channel API

    Channel API 在您的应用程序和 Google 服务器之间创建持久连接,允许您的应用程序在不使用轮询的情况下实时向 JavaScript 客户端发送消息。这对于旨在立即向用户更新新信息的应用程序很有用。一些示例用例包括协作应用程序、多人游戏或聊天室。一般来说,在无法预测或编写脚本更新的情况下,例如在人类用户之间传递信息或来自非系统生成的事件时,使用 Channel API 比轮询更好。 - 取自以下链接

    http://code.google.com/appengine/docs/python/channel/overview.html

    更新:2016 年 10 月 27 日

    Channels API 已被弃用,并计划在 2017 年 10 月 31 日之前停用

    https://cloud.google.com/appengine/docs/deprecations/channel

    替代产品

    您可以使用 Firebase 实时数据库来实现卓越的 应用程序中的实时功能。 Firebase 更强大 和可定制的解决方案而不是 Channels API,它允许 与更广泛的客户进行沟通。目前支持 Android、iOS 和应用程序以及网络浏览器应用程序。

    【讨论】:

      【解决方案2】:

      GAE 不支持套接字。更多支持/不支持的 infp 在这里:

      http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine?pli=1

      【讨论】:

      【解决方案3】:

      我可以确认我有一个使用 canvas/GWT/App Engine 的多人游戏,并且使用通道 api 正在运行。我使用内存缓存来保存当前状态并让客户端以其当前状态向服务器报告,然后如果经过一定时间,服务器将向所有客户端广播新状态(如果你不经常发送它拥有大量用户)。这种方法似乎占用了大量的 cpu 能力,但是,目前我的方法是在服务器上拥有最少的逻辑,这意味着有很多黑客攻击等的开口。多人交互需要一些工作,但我有玩家在其他客户端上移动大约半秒延迟,这也是因为我没有直接显示最后一个已知位置,我在旧位置和最后一个已知位置之间进行插值。如果有人对如何在谷歌应用引擎上而不是使用内存缓存有更好的方法,请告诉我。

      【讨论】:

        【解决方案4】:

        现在从 1.7.2 开始通过注册受信任的测试人员来支持套接字

        http://googleappengine.blogspot.com/2012/09/app-engine-172-released.html

        【讨论】:

        • 这是出站套接字,不是入站套接字。
        猜你喜欢
        • 1970-01-01
        • 2017-04-05
        • 2012-03-22
        • 2021-05-13
        • 1970-01-01
        • 2013-02-07
        • 1970-01-01
        • 2019-02-22
        • 2013-03-26
        相关资源
        最近更新 更多