如何修复节点中的CORS问题并使用socket.io对应用程序进行响应



你好,我们正试图在我们已经在运行的应用程序中实现聊天功能,该应用程序是一个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>");

最新更新