【发布时间】:2020-01-07 21:38:36
【问题描述】:
我最近向 Google App Engine 部署了一个 node.js 服务器应用程序,该应用程序通过 socket.io 与客户端应用程序通信。根据this article,App Engine 现在支持 websocket。
但是,客户端应用程序无法通过 wss 协议连接到服务器。我可以在浏览器控制台中看到以下错误消息。 (我删除了我的服务器域)
与“wss://[my server]/socket.io/?EIO=3&transport=websocket&sid=dbB2UgsCYhD7c1ucAAAA”的 WebSocket 连接失败:WebSocket 握手期间出错:意外响应代码:400
Socket.io 然后回退到 https 长轮询,效果很好。
这是我的 app.yaml 用于部署到应用引擎,session_affinity 设置为 true 以进行长轮询。
runtime: nodejs10
instance_class: F2
handlers:
- url: /.*
secure: always
redirect_http_response_code: 301
script: auto
network:
session_affinity: true
Socket.io 直接用在服务器端:
this.server = this.app.listen(this.PORT, (err: any) => {
io = socketio().listen(this.server);
io.on("connection", (socket) => {
console.log('A socket connection was made!');
});
});
我想知道如何让 websocket 连接在 App Engine 上工作?也许需要防火墙规则或其他配置更改?
【问题讨论】:
标签: node.js google-app-engine websocket socket.io