首页 > 解决方案 > 如何使用 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) => {...}

任何人都可以帮助我吗?

标签: reactjssocketsngrok

解决方案


您需要在服务器和本地 PC 中启用 CORS 标头。如果没有 CORS 标头,websocket 的目的地与原始主机相同。


推荐阅读