微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有 React 和 Express 的套接字 IO ReactJS 错误:无法代理请求 /socket.io/?EIO=4..... 从 localhost:3000 到 http://127.0.0.1:4000

如何解决带有 React 和 Express 的套接字 IO ReactJS 错误:无法代理请求 /socket.io/?EIO=4..... 从 localhost:3000 到 http://127.0.0.1:4000

我正在尝试在我的 creat-react-app 前端和我的快速后端之间建立连接。我将代理设置为后端服务的端口 (4000)。当我运行应用程序时,前端出现代理错误

Proxy error: Could not proxy request /socket.io/?EIO=4&transport=polling&t=NRRFdVj&sid=CJzhACsXdlxmP4araAAQ from localhost:3000 to http://127.0.0.1:4000.
See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ECONNRESET).

这是我的代码

后端/index.js

const app = require('express')();
const http = require('http');
const server = http.createServer(app);

const io = require('socket.io')(server);

io.on('connection',(socket) => {
  console.log('New WS connection....');
});

server.listen(4000,() => console.log('Server running on port 4000'));

前端/App.js

import React from 'react';
import socketClient from 'socket.io-client';

const App = () => {
  const socket = socketClient();
  return <div>hello</div>;
};

export default App;

前端/package.json

{
  "name": "frontend","proxy": "http://127.0.0.1:4000/","version": "0.1.0","private": true,"dependencies": {
    "@testing-library/jest-dom": "^5.11.8","@testing-library/react": "^11.2.2","@testing-library/user-event": "^12.6.0","react": "^17.0.1","react-dom": "^17.0.1","react-scripts": "4.0.1","socket.io-client": "^3.0.5","web-vitals": "^0.2.4"
  },"scripts": {
    "start": "react-scripts start","build": "react-scripts build","test": "react-scripts test","eject": "react-scripts eject"
  },"eslintConfig": {
    "extends": [
      "react-app","react-app/jest"
    ]
  },"browserslist": {
    "production": [
      ">0.2%","not dead","not op_mini all"
    ],"development": [
      "last 1 chrome version","last 1 firefox version","last 1 safari version"
    ]
  }
}

当我从后端获取数据时,代理工作正常,但在这种情况下使用它时会发生代理错误...

解决方法

试试下面的代码。您没有在 socketClient([URL][,options]); 上添加 URL 参数;

import React from 'react';
import socketClient from 'socket.io-client';

const App = () => {
  const socket = socketClient("http://localhost:4000");
  return <div>hello</div>;
};

export default App;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。