通过带有托管VM支持的Google appengine前端连接到wss安全套接字服务器时遇到了麻烦。
购买默认谷歌曝光仅端口8080在docker image google / nodejs-runtime中,即使在Dockerfile中公开端口8443,如下所示,我只能连接到http://localhost:8080 not https://localhost:8443
FROM google / nodejs
WORKDIR / app
ADD package.json / app /
运行npm install
ADD。 /应用
EXPOSE 8443
CMD []
ENTRYPOINT [" / nodejs / bin / npm"," start"]
仍然可以看到端口8080包含在容器中 " / nodejs / bin / npm start 8443 / tcp,0.0.0.0:8080-> 8080 / tcp
如果我登录我的托管虚拟机实例并使用
运行容器映像docker run -d -p 8443:8443 nodejs.default.wss-check:latest
并尝试
$curl https://localhost:8443
我得到卷曲:(60)SSL证书问题:无法获得本地颁发者证书,看起来像是连接但我使用真实域名
我已经在github中创建了一个问题以及https://github.com/GoogleCloudPlatform/appengine-nodejs-quickstart/issues/13
,但没有那么有帮助。
相同的设置就像普通计算实例中的魅力一样。但它并没有自动扩展。 对此问题的任何帮助将不胜感激。
答案 0 :(得分:2)
您无法在localhost(https
)上卷曲到curl: (60) SSL certificate problem: unable to get local issuer certificate
的原因是因为任何CA都不知道“localhost”。您需要运行curl -k https://localhost:8443
才能忽略localhost
缺少证书。
答案 1 :(得分:1)
目前看来Google Managed VM仅支持JAVA
上的Websocket连接即使您在GMV上使用nodejs尝试websocket连接,它也默认为轮询传输。如果你想在现场看到这个,你可以使用set socket transports,deploy to live并查看console-network,看看它使用的是哪个传输!
socket.set('transports', [
'websocket'
, 'flashsocket'
, 'htmlfile'
, 'xhr-polling'
, 'jsonp-polling'
]);
我们必须等到Managed VM中的google implements websocket支持。如果有人在GMV上工作,请在这里评论:)