我有一个使用nginx代理托管AWS AWS 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
。