在AppEngine上启动我的NodeJs应用程序后,我发现它抛出异常:app.min.js:20 WebSocket连接到'wss://hostname/socket.io/?EIO = 3& transport = websocket& sid = OClcQulfAmcJEpfMAAAV'失败:WebSocket握手期间出错:意外响应代码:400
尝试google,我发现Google Cloud似乎不支持WebSockets。由于app已经编写,我们没有太多时间重写它,有没有其他方法可以保持原样并让socket.io与Google Cloud一起使用?是否可以单独运行Socket.IO服务器并通过它进行通信?将应用程序迁移到Compute Engine上的独立VM可以解决它,或者即使在那里也不支持套接字?
跟进:我发现它可以在Chrome上运行,因为它会自动切换到合并传输。
答案 0 :(得分:2)
可以使用运行Node.js的Flexible Environment来完成。然而,
注意:App Engine当前不支持安全WebSockets 灵活的环境。 WebSockets仅在您加载页面时才有效 通过HTTP(不是HTTPS)。
https://github.com/GoogleCloudPlatform/nodejs-docs-samples/tree/master/appengine/websockets
编辑:要添加,有一个测试版支持使用台风的GAE的Web套接字。以下是感兴趣的人的链接: https://code.google.com/archive/p/typhoonae/wikis/WebSockets.wiki
答案 1 :(得分:0)
将Google App Engine用作Web前端并在虚拟机中运行socket.io(用于长期客户端连接)还提供可扩展的解决方案。 A scalable architecture from a real time gaming app on google cloud platform