我正在 Digital Ocean 的应用平台上部署我的应用。我的前端 React 应用程序和后端 Express 应用程序作为不同的组件位于同一“应用程序”下。 我无法通过我的客户端连接到我的 socket.io 网络套接字服务器。我正在使用自己的域,在连接到我的套接字 io 服务器时出现以下错误:
WebSocket connection to 'wss://example.com:8080/ws' failed: Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR
我的 socket io 服务器在端口 5000 上侦听,我的 react 客户端在端口 8080 上,并且我有一个到我的服务(socket io 服务器所在的位置)的路由 /api。我尝试连接的套接字 io 端点是“https://example.com/api”。
在本地开发中,我有一个类似的设置并且可以正常工作。在本地,我监听端口 5000,我使用的端点是“http://127.0.0.1:5000”。我该怎么做才能从应用程序平台上的客户端连接到我的套接字 io 服务器?我通过 https://example.com/api 的 https 端点有效,但我无法连接到套接字 io 服务器。
后台服务:
const server = http.createServer(app);
const io = new Server(server, {
cors: {
origin: [CLIENT_URL],
credentials: true
}
});
// Socket io middleware
const wrap = (middleware: any) => (socket: any, next: any) => middleware(socket.request, {}, next);
io.use(wrap(sessionMiddleware));
io.use(wrap(passport.initialize()));
io.use(wrap(passport.session()));
io.use(wrap(isLoggedIn));
fishingSocket(io, fishingController);
server.listen(POND_SERVICE_PORT, () => console.log('Server Running'));
反应客户:
const webSocket = io(`${process.env.SERVICE_ENDPOINT}`, { withCredentials: true});
我尝试将 socker io 端点 url 设置为 http,但这也不起作用。