#node.js #reactjs #websocket #reverse-proxy #http-proxy
Вопрос:
У меня есть приложение React, которое настраивается setupProxy.js, и предполагается, что он будет прокси-сервером моего бэкенда ws. Но почему-то соединение не установлено, однако запросы http и https работают просто отлично. пример прикрепления кода:
setupProxy.js
const { createProxyMiddleware } = require('http-proxy-middleware')
module.exports = (app) => {
app.use(
'/sockets',
createProxyMiddleware({
target: 'ws://localhost:8080',
pathRewrite: (path) => path.replace('/sockets', ''),
secure: false,
changeOrigin: true
})
);
app.use(
'/hello',
createProxyMiddleware({
target: 'http://localhost:8080/hello',
pathRewrite: (path) => path.replace('/hello', ''),
secure: false,
changeOrigin: true
})
)
}
Приложение.tsx
import React from 'react';
const App: React.FC = () => {
React.useEffect(() => {
new WebSocket(`ws://${window.location.host}/sockets`);
fetch('/hello').then(value => value.json()).then(res => console.log('response: ', res))
}, [])
return (
<div>
Hello World
</div>
)
}
export default App;
backend/index.js
const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
const { Server } = require("socket.io");
const io = new Server(server);
app.get('/hello', (req, res) => res.send({hello: 'hello'}))
io.on('connection', (socket) => {
console.log('a user connected');
socket.disconnect();
});
server.listen(8080, () => {
console.log('listening on *:8080');
});
Заранее спасибо 😉
Комментарии:
1. и как ваши setupProxy.js вступает в игру?
2. что вы имели в виду, я не понял, в этой строке
ws://${window.location.host}/sockets
я прошу прокси-сервер подключиться к серверной части3. как это
setupProxy.js
указано в вашем коде?4. Он запускается с помощью сценариев реакции в настройках приложения
5. Вы нашли решение?