【发布时间】:2020-07-17 21:48:54
【问题描述】:
我有一个使用 nginx 代理由 AWS Elastic Beanstalk 托管的网站,并且一直在尝试使用 Socket.IO,但是当页面尝试建立连接时,我收到了 Firefox can’t establish a connection to the server at wss://my-domain.com/socket.io/?EIO=3&transport=websocket&sid=WKtOGhLspneTExRLAAAB 的错误消息和 400 响应代码。
这是创建节点服务器并发出事件的方式:
const express = require("express");
const app = express();
const server = app.listen(8081, () => {
console.log("Server started on port " + port);
});
const io = require("socket.io")(server);
app.route("/api/listener").post((req, res) => {
io.emit("response", req.body.Status);
res.sendStatus(200);
});
这是客户端尝试连接的方式:
const io = require("socket.io-client");
let socket = io("https://my-domain.com");
socket.on("response",
function() {
console.log("Response received");
});
我已经尝试过其他类似问题的建议,例如将协议更改为 SSL 并将实例协议更改为 TCP,但这会阻止站点访问。我的 nginx 配置中确实设置了 proxy_set_header Connection "upgrade" 和 proxy_set_header Upgrade $http_upgrade。
【问题讨论】:
标签: amazon-web-services nginx socket.io amazon-elastic-beanstalk