如何通过 Express JS 服务器使 React JS 和 Socket IO 连接在一起?

Posted

技术标签:

【中文标题】如何通过 Express JS 服务器使 React JS 和 Socket IO 连接在一起?【英文标题】:How can i make React JS and Socket IO connect together via Express JS server? 【发布时间】:2021-06-05 12:18:33 【问题描述】:

所以我最近正在尝试使用 socket io,但它不允许我连接到 React JS。在 console.log 它给了我一些奇怪的错误信息。看看下面的代码。我将发布 React 和 localhost 的图像。

服务器(Express JS):

const app = require("express")();
const bodyParser = require("body-parser");
const cors = require("cors");
const http = require("http").createServer(app);
const io = require("socket.io")(http);
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded( extended: true ));
io.on("connect", (socket) => console.log("connected"););
app.listen(5000, () => console.log(`Running on port...`));

【问题讨论】:

嘿,你解决了这个问题吗? 【参考方案1】:

您需要添加一个 GET 请求可以到达的虚拟路由。

试试这个:

const express = require("express");
const app = express();
const router = express.Router();
const bodyParser = require("body-parser");
const cors = require("cors");
const http = require("http").createServer(app);
const io = require("socket.io")(http);

app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded( extended: true ));

router.get("/", (req, res) => 
  res.send( response: "I am alive" ).status(200);
);

app.use("/socket.io", router);

io.on("connect", (socket) => 
  console.log("connected");
);

app.listen(5000, () => console.log(`Running on port...`));

【讨论】:

【参考方案2】:

您可以在 useEffect 挂钩中初始化套接字,或者使用 io.connect(URL) 而不是 io(URL) 后端看起来不错。我写了一篇关于它的博客article。

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于如何通过 Express JS 服务器使 React JS 和 Socket IO 连接在一起?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 REST API 微服务(使用 Express 构建)将 MongoDB 更改流与节点 js 一起使用

如何使用 express 框架通过 node.js 获取远程客户端的本地 IP 地址?

使用历史模式通过 Express.js 服务 VueJS 构建

如何从 Node.js/Express 服务器调用 GraphQL API?

Vue.js+express建站

如何防止直接访问 IP Express node.js