【问题标题】:Run Websocket on GAE在 GAE 上运行 Websocket
【发布时间】:2015-01-30 00:37:39
【问题描述】:

我正在尝试使用 websocket 调整我的应用程序以在 GAE 上运行,但是阅读文档后,我没有找到解决此问题的好方法。

使用这样一个非常简单的应用程序:https://github.com/marcosbergamo/gae-nodejs-websocket

这是我尝试使用的示例演示。但是当我尝试连接到我的 websocket 时收到此错误;

关注请求的图片;

【问题讨论】:

标签: javascript node.js google-app-engine websocket google-cloud-platform


【解决方案1】:

要使用 websocket,您必须使用具有自定义运行时的 Google 托管 VM。

https://cloud.google.com/appengine/docs/managed-vms/custom-runtimes

一旦运行,您将需要通过 ip 或 cname 直接访问该服务器。您不能通过 appspot.com 域。

【讨论】:

  • 除了在网络配置中打开该端口,您还需要在 Dockerfile 中转发该端口。你可以看到我的回购:github.com/jdeskins/socketio-gcmvm
  • 我知道,我在我的示例存储库中更新了我的 readme.md。谢谢你的回答=D
【解决方案2】:

经过大量时间的学习和测试,Google 的一位朋友向我展示了解决此问题的方法! 谢谢蒂亚戈·阿万奇尼!

嗯,解决办法是:

第一步是使用 managed-vms。 (回购使用它。) 但目标是将管理从谷歌切换到用户。执行此操作时,下一步是为您的应用程序创建一个静态 IP。在我的情况下,我使用端口 3000 为我的 Websocket 提供服务,请随时更改。 在我的 app.yaml 上,我也启用了这个端口:

network:
  forwarded_ports: ["3000"]

记得在“网络>>默认>>防火墙”中启用代理上的这个端口。

如果您通过 gcloud 部署应用程序,您需要在您的应用程序上再次启用用户管理和静态 IP。

我会将这个 repo 发送到 GoogleCloudPlatform,因为这将是在 AppEngine 上使用 websockets 的示例。

【讨论】:

  • 我已经能够使用您建议的方法连接到 GAE 上的 wamp 服务器,但我不需要将我的实例切换到用户管理。
【解决方案3】:

更新:2019 年 2 月 4 日

Google Announced WebSockets support for the App Engine Flexible Environment

WebSockets 可用于您的 App Engine 柔性环境应用程序,无需特殊设置。查看我们的文档以了解更多信息:Python | Java | Nodejs.

您必须添加到您的app.yaml

network:
  session_affinity: true

【讨论】:

    【解决方案4】:

    不能有传入的套接字连接:

    https://cloud.google.com/appengine/docs/python/sockets/#limitations-and-restrictions

    你不能创建监听套接字;您只能创建出站 插座。

    【讨论】:

      猜你喜欢
      • 2011-05-06
      • 2018-11-03
      • 2019-05-24
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多