【问题标题】:How can I run a WebSocket server on top of GAE?如何在 GAE 之上运行 WebSocket 服务器?
【发布时间】:2011-05-06 02:53:28
【问题描述】:

如何在 Google App Engine 上运行 WebSocket 服务器?可能吗?有可能吗?

【问题讨论】:

标签: google-app-engine websocket


【解决方案1】:

希望有所帮助,但现在似乎得到了支持。 2021 [https://cloud.google.com/appengine/docs/flexible/java/using-websockets-and-session-affinity][1]

【讨论】:

    【解决方案2】:

    2019 年 6 月

    现在 SLA for Flex 支持 GAE 的 Websocket 支持。

    Hi everyone, I'm happy to announce that Websockets support 
    for Flex is now Generally Available! We've made no changes since Beta 
    but Websockets traffic is now subject to our SLA. 
    
    We've also published documentation for this feature for all App Engine Flex languages.
    

    https://issuetracker.google.com/issues/35886348#comment285

    【讨论】:

      【解决方案3】:

      Google App Engine 最近在 App Engine 柔性环境中推出了对 Websockets 的支持。你可以看看他们的博文。

      https://cloud.google.com/blog/products/application-development/introducing-websockets-support-for-app-engine-flexible-environment

      【讨论】:

        【解决方案4】:

        截至 2019 年 1 月 9 日,它现在正式进入 Beta 版 - 但仅适用于 App Engine flexible。例如,请参阅Python documentation。不过,根据issue tracker,它适用于任何语言。

        【讨论】:

          【解决方案5】:

          所有这些答案都已过时。

          频道 API 为 deprecated。 Google强烈建议您使用Firebase

          另外值得注意的是,谷歌现在已经发布了flexible environment

          借助灵活的环境,您可以轻松地允许套接字连接,或者使用 Python 3。

          【讨论】:

          • 我认为灵活的环境基本上是在运行您自己的计算引擎,因此它很可能会工作......而且可能是我想要的......但是你需要一个 24/7 运行(约£最小的虚拟机每年 50 个)
          • 我可以确认柔性环境中的套接字确实可以工作。使用 socket.io 测试,无需特殊配置。
          【解决方案6】:

          有可能吗?

          没有。

          您现在不能,因为 GAE 不允许通用入站套接字连接。每个请求也限制为 30 秒,但这可以通过自动重新连接和会话跟踪轻松解决。

          有可能吗?

          大概吧。

          Google 一直是 WebSockets 标准的最大(主要)推动者之一。如果他们在未来的某个时候不将它的支持推到 GAE 中,我会感到惊讶。请注意,WebSockets 草案标准仍在不断变化,因此 Google 可能会在标准更加稳固之前犹豫是否要添加支持。

          这是 GAE 上 WebSockets 支持的错误:http://code.google.com/p/googleappengine/issues/detail?id=2535

          请注意,Google 员工表示它不在路线图上,但他们知道它会很有用。这与您从谷歌获得的关于尚未公布的功能的回答一样积极。我建议将您的声音添加到该错误中,以支持 WebSocket。不会痛的。

          另外,根据您的应用程序,您可以考虑使用可能很快就会支持 GAE 的 Channel API:

          EDIT (2015):Channels API 现已推出(已经有一段时间了)。

          【讨论】:

          【解决方案7】:

          现已正式支持。

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

          编辑:支持 Channel API,不支持 WebSockets。 Channel API 是基于 WebSockets 构建的,但它不能让您直接访问 WebSocket。我想这对于典型的 Web 应用程序来说已经足够了。

          【讨论】:

          【解决方案8】:

          还有这个:https://cloud.google.com/appengine/docs/go/sockets/ 虽然它是实验性的,而且水平非常低。

          【讨论】:

          • "套接字仅适用于付费应用程序。您不能创建监听套接字;您只能创建出站套接字。"
          • @demented Hedgehog,你知道只创建出站套接字的部分吗?我可以在前端向用户发送实时更新。
          【解决方案9】:

          有几个人在另一台服务器的帮助下让 websockets 与 GAE 一起工作...结帐http://code.google.com/p/typhoonae/wiki/WebSockets

          【讨论】:

            【解决方案10】:

            你不能。

            GAE 将 HTTP 请求限制为 30 秒,WebSockets 期望连接打开很长时间。

            有可能吗?只有 Google 知道这一点。

            【讨论】:

            • 30 秒的请求限制并不是真正的主要障碍。很容易创建一个层,在旧请求过期之前为同一会话启动一个新的 WebSockets 连接,这样您就不会在通信中出现任何间隙。只允许入站 HTTP 请求才是真正的杀手锏。
            • Websockets 是两种方式(与 HTTP 一样),但它们仅在入站启动(从客户端到服务器)。 en.wikipedia.org/wiki/WebSockets
            • 而且GAE也是出站的:使用URL Fetch
            猜你喜欢
            • 2015-01-30
            • 1970-01-01
            • 2012-01-18
            • 2018-09-01
            • 2021-06-06
            • 1970-01-01
            • 2013-07-30
            • 2011-02-07
            • 2021-07-19
            相关资源
            最近更新 更多