你好,我们正试图在我们已经在运行的应用程序中实现聊天功能,该应用程序是一个MERN堆栈应用程序,我们选择使用socket.io,因为它很容易设置和使用,我们设法让它在本地工作,但当我们部署在开发服务器上时,聊天不起作用,我们遵循这个socket.io文档来尝试解决这个问题,当我们在本地遇到CORS问题时,这个问题对我们很有用,https://socket.io/docs/v3/handling-cors/这是使用的服务器端代码:
const io = require("socket.io")(http, {
cors: {
origin: "<client web address>",
methods: ["GET", "POST"],
},
这本身在服务器上不起作用,但它足以让它在本地工作,我们将localhost:3000放在那里。
const io = require("socket.io")(http, {
cors: {
origin: "http/localhost:3000",
methods: ["GET", "POST"],
},
所以我们在客户端添加了这个,而不是
socket = io(":5000")
当我们定义套接字时,我们将其更改为
socket = io("<server_ip_addresse>:5000");
GEThttp://************:5000/socket.io/?EIO=4&transport=轮询&t=N hodkHnet::ERR_CONNECTION_TIMED_OUT
这是我们在负责聊天的组件试图与服务器设置套接字时遇到的错误
我们怎样才能解决这个问题?
解决方案是在两种设置中都使用网站URL;用于后端的cors原始地址和在前端创建的套接字所以
const io = require("socket.io")(http, {
cors: {
origin: "<website URL>",
methods: ["GET", "POST"],
},
当从客户端与服务器设置套接字时,我们使用了与开发服务器中部署应用程序相同的URL
像这样没有任何端口的
socket = io("<website URL>");