[英]Getting websocket error message without using any websocket in react
我正在制作一个简单的 REST API 基于 Express-React-Node-MySQL 堆栈。
建筑学
网络
As you may know cloudflare only accepts port 443, 2053, 2083 etc as secure https ports, I was forced to change reactjs default port from 3000 to 2053, as linux does not allow ports below 1000 to be used by non root user. 在我的机器上,我已经配置了,所有从外部到端口 443 的请求都被重定向到端口 2053。
交通顺序
https://example.in -> https://myIP:443 -> 重定向 -> https://myIP:2053。
客户端架构
现在默认情况下,只要你在http://localhost:3000开始输入 npm ,react js 就会启动 localhost。 由于上述原因,我不得不将其更改为https://localhost:2053 。
我是怎么做到的?
{
"name": "client",
"version": "0.1.0",
"private": true,
"proxy": "http://localhost:2083",
"dependencies": {
"@emotion/react": "^11.7.1",
"@emotion/styled": "^11.6.0",
"@fortawesome/fontawesome-svg-core": "^1.3.0-beta3",
"@fortawesome/free-regular-svg-icons": "^6.0.0-beta3",
"@fortawesome/free-solid-svg-icons": "^6.0.0-beta3",
"@fortawesome/react-fontawesome": "^0.1.16",
"@material-ui/core": "^4.12.3",
"@material-ui/icons": "^4.11.2",
"@mui/icons-material": "^5.2.5",
"@mui/material": "^5.2.7",
"@testing-library/jest-dom": "^5.16.1",
"@testing-library/react": "^12.1.2",
"@testing-library/user-event": "^13.5.0",
"js-cookie": "^3.0.1",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-google-recaptcha-v3": "^1.9.7",
"react-router-dom": "^6.2.1",
"react-scripts": "5.0.0",
"recaptcha-v3": "^1.10.0",
"web-vitals": "^2.1.3"
},
"scripts": {
"start": "HTTPS=true PORT=2053 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"
]
}
}
这一行 = > "start": "HTTPS=true PORT=2053 react-scripts start",
现在让我们来看看出了什么问题。
当我启动客户端/reactjs 时,这会在浏览器控制台中发生。
我没有使用任何 websocket 或套接字 io 之类的东西,为什么会触发此错误控制台消息? 我究竟做错了什么。 PLZ告诉:(
这是一个很好的问题! 感谢分享
直截了当: 文档明确指出
代理选项支持 HTTP、HTTPS 和 WebSocket 连接。
还有:
如果代理选项对您来说不够灵活,您也可以:
自己配置代理
我知道.. 这不是一个很好的选择,但是 - 使用这个选项生产也不理想。 大多数情况下,您的应用程序将通过真实服务器或通过具有固定地址或有效域的 API 网关提供服务
另请注意,如果您使用的是安全连接,您还需要管理有效的证书(或使用可以提供证书的管理解决方案)
简而言之:生产和开发具有不同的配置集,因此 - 在生产中您将使用不同的配置并且不会出现此错误。 此错误可能仅在使用此特定配置的开发模式下生成
我希望你满意,因为这个答案的devOps
将更多关于生产配置而不是开发指南的 devOps
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.