在GAE上运行Websocket

问题描述 投票:6回答:4

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

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

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

关注有关请求的图片;

javascript node.js google-app-engine websocket google-cloud-platform
4个回答
4
投票

要使用websockets,您必须将Google Managed VM与自定义运行时一起使用。

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

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


2
投票

后来经过了很多时间的学习和测试,谷歌的一位朋友向我展示了这个问题的解决方案!谢谢Thiago Avancini!

那么,解决方案是:

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

network:
  forwarded_ports: ["3000"]

请记住在“网络>>默认>>防火墙”中启用代理上的此端口。

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

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


0
投票

无法有传入套接字连接:

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

你不能创建一个监听套接字;你只能创建出站套接字。


0
投票

更新: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
© www.soinside.com 2019 - 2024. All rights reserved.