WebSocket在连接建立之前就被关闭。Socket.io和React。

4
我想使用Socket.io制作一个聊天应用程序,我遵循了这个教程:https://youtu.be/ZwFA3YMfkoc。我正在使用React和Node.js。
在本地使用它时一切正常,甚至在我的网络上的不同设备上也是如此。然而,如果我将后端托管在Heroku上,则无法正常工作。
错误消息为:WebSocket连接到'URL'失败:WebSocket在建立连接之前已关闭。(URL是我的后端URL和端口)。我正在使用SSL。
我已经尝试启用会话亲和力,但已经启用了。
我的后端代码是(至少我认为与问题相关的代码):
const app = express();
const server = http.createServer(app);
const io = socketio(server);
app.use(cors()); 
server.listen(PORT, () => console.log("Server started on " + PORT));

我的前端代码使用React编写,具体如下:

var connectionOptions = {
  "force new connection": true,
  reconnectionAttempts: "Infinity",
  timeout: 10000,
  transports: ["websocket"],
};
const ENDPOINT = "URL"; 
socket = io(ENDPOINT, connectionOptions);
2个回答

3

我已经解决了我的问题。

客户端的URL必须没有端口号。

例如:

const ENDPOINT = "https://web.site.com";

而不是:

const ENDPOINT = "https://web.site.com:1337";


0

调用socket.connect()或在提供的选项中添加autoconnect: true。


不幸的是,这并没有起作用... 我尝试了所有可能的变化,同时添加了socket.connect()和autoconnect: true。(socket.connect ✔ & autoconnect: true ✔; socket.connect ✔ & autoconnect: true ❌; socket.connect ❌ & autoconnect: true ✔) - Xaver Drabik
如果您使用的是autoconnect true,则无需添加socket.connect()。 - amardeep saini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接