2

我无法通过具有托管 VM 支持的 google appengine 前端连接到 wss 安全套接字服务器。

购买默认谷歌仅在 docker image google/nodejs-runtime 中公开端口 8080,即使像下面这样在 Dockerfile 中公开端口 8443 我也只能连接到http://localhost:8080 not https://localhost:8443

来自谷歌/nodejs

工作目录 /app

添加 package.json /app/

运行 npm 安装

添加 。/应用程序

暴露 8443

命令[]

入口点 ["/nodejs/bin/npm", "start"]

我仍然可以看到端口 8080 包含在容器中“/nodejs/bin/npm start 8443/tcp, 0.0.0.0:8080->8080/tcp

如果我登录到我的托管 vm 实例并运行容器映像

docker run -d -p 8443:8443 nodejs.default.wss-check:latest

并尝试

$curl https://localhost:8443

我得到 curl:(60)SSL 证书问题:无法获取本地颁发者证书,它看起来像是在连接,但我必须使用真实域名

我也在 github 中创建了一个问题https://github.com/GoogleCloudPlatform/appengine-nodejs-quickstart/issues/13,但没有那么有帮助。

相同的设置就像普通计算实例中的魅力一样。但它不会自动缩放。对此问题的任何帮助将不胜感激。

4

2 回答 2

1

看起来目前 Google Managed VM 仅在JAVA上支持 Websocket 连接

即使您尝试在 GMV 上使用 nodejs 进行 websocket 连接,它也默认为轮询传输。如果你想在现场看到这个,你可以使用设置套接字传输,部署到现场并查看控制台网络,看看它使用的是哪个传输!

socket.set('transports', [
'websocket'
, 'flashsocket'
, 'htmlfile'
, 'xhr-polling'
, 'jsonp-polling'
]);

我们必须等到谷歌在托管 VM 中实现 websocket 支持。如果有人在 GMV 上得到这个工作,请在这里评论:)

于 2015-03-23T09:56:44.607 回答
1

您无法https在 localhost ( curl: (60) SSL certificate problem: unable to get local issuer certificate) 上卷曲的原因是因为任何 CA 都不知道“localhost”。您需要运行curl -k https://localhost:8443以使其忽略缺少localhost.

于 2015-01-14T17:21:47.590 回答