首页 > 解决方案 > nodejs 并对 socket.io 的不同端口做出反应?

问题描述

我在端口 3000 上启动了我的项目,在端口 8080 上启动了 nodejs 服务器

如果服务器套接字位于不同的端口上,如何将它们与客户端连接?

标签: node.jsreactjssocket.io

解决方案


最近做了一些事情,所以我会提出同样的建议。你可以使用这样的东西:

const express = require("express");
const { createProxyMiddleware } = require('http-proxy-middleware');
const http = require("http").Server(app);
const io = require("socket.io")(http);
const port = 3100;

app.use('/', createProxyMiddleware({
   target: "http://localhost:3000",
   changeOrigin: true
}));

const onConnection = socket => {
  socket.on("channel", data => socket.broadcast.emit("channel", data));
};

io.on("connection", onConnection);

http.listen(port, () => {
  console.log("Server started in port " + port + ".");
});

如果你只是想运行一个普通的 Node JS + React JS 服务器来CORS绕过,你可以使用以下proxy选项package.json

"proxy": "http://my-api-server:port",

有关更多详细信息,您可以阅读Using React's Proxy to get ahead CORS & use HTTPS for API calls


推荐阅读