reactjs - 如何使用 ngrok 公开 React 开发服务器和 websocket 服务器
问题描述
我正在使用 React 构建一个应用程序,在端口 3000 上运行,该应用程序依赖于用于 Web 套接字的(本地)服务器,在端口 3001 上运行。客户端-服务器通信在本地运行良好,但在尝试公开时遇到了一些问题使用 ngrok 的应用程序。特别是,我能够公开客户端(在端口 3000 上),但是当远程主机尝试打开与 Web 套接字的连接时,客户端会联系远程主机的服务器而不是我的服务器。前段时间我用 ngrok 暴露了 react 客户端,请求被正确发送到我的本地机器,但是使用 web sockets 我遇到了一些麻烦。
这是为客户端打开连接的代码:
const socket = io('http://localhost:3001');
在服务器上我得到:
const socket = require('socket.io');
const app = express();
const server = app.listen(3001,()=> console.log('Server listening on port 3001'));
const io = socket(server,{
cors: { origin: "*" }
});
io.on('connection', (socket) => {...}
任何人都可以帮助我吗?
解决方案
您需要在服务器和本地 PC 中启用 CORS 标头。如果没有 CORS 标头,websocket 的目的地与原始主机相同。
推荐阅读
- php - 善用静态工厂
- python - 格式化 Tesseract 4 日志
- android - Gradle:如何使用分组模块获取实际模块名称
- java - Flink Keystream 性能慢
- python - 如何使用 OneToOneField 创建模型对象
- java - 无法解析符号“ViewHolder”Java Android Studio
- go - 注册在 localhost 上运行的 grpc-gateway 处理程序时连接被拒绝错误
- django - Django:从模板中访问外键
- python - 如何在 Python 中公开我的 S3 存储桶中的对象图像?
- r - R 是什么??(两个问号)mean vs. ? (一个问号)