我的webhost有针对套接字服务器的规则,所以我一直在研究GAE。
有没有人知道可以在GAE上成功运行的套接字服务器?我正在将它用于闪存,所以像smartfox这样的东西如果可能的话会很棒。
感谢。
答案 0 :(得分:7)
Google App Engine现在有渠道API
Channel API在您的应用程序和Google服务器之间创建持久连接,允许您的应用程序实时向JavaScript客户端发送消息,而无需使用轮询。这对于旨在立即更新用户有关新信息的应用程序非常有用。一些示例用例包括协作应用程序,多玩家游戏或聊天室。通常,在无法预测或编写更新的情况下,使用Channel API是一种更好的选择,例如在人类用户之间传递信息或者不系统地生成事件时。 - 取自以下链接
http://code.google.com/appengine/docs/python/channel/overview.html
渠道API已被弃用,并计划在 2017年10月31日之前拒绝
https://cloud.google.com/appengine/docs/deprecations/channel
替代产品
您可以使用Firebase实时数据库实现卓越 应用程序中的实时功能。 Firebase更加强大 和Channels API相比,它可以自定义解决方案 与更广泛的客户沟通。它目前支持 Android,iOS和应用以及网络浏览器应用。
答案 1 :(得分:6)
GAE不支持套接字。这里有更多支持/不支持的信息:
http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine?pli=1
答案 2 :(得分:5)
我可以确认我有一个使用canvas / GWT / App Engine的多人游戏,并使用频道api运行。我使用memcache来保持当前状态并让客户端以其当前状态向服务器报告,然后服务器将在特定时间过后向所有客户端广播新状态(以防止它经常发送给您拥有大量用户)。这种方法似乎占用了大量的cpu功率,但是,目前我的方法是在服务器上有一个最小的逻辑,这意味着有很多开放的黑客等。多人互动需要一些工作,但我有玩家在aprox内移动半秒钟延迟到其他客户端,这也是因为我没有直接显示最后已知的位置,我在旧位置和最后一位已知位置之间进行插值。如果有人在谷歌应用引擎上有更好的方法,而不是使用内存缓存,请告诉我。
答案 3 :(得分:3)
现在,通过注册受信任的测试人员
,自1.7.2开始支持套接字http://googleappengine.blogspot.com/2012/09/app-engine-172-released.html