Итак, у меня есть сервер веб-сокетов, построенный на Python, который развернут в контейнере EC2. Подключение через почтальон работает отлично, но при подключении через Websocket в React всегда выдает такую ошибку:
Соединение WebSocket с «wss://xxx:3500/» не удалось:
без дальнейшего описания.
useEffect(() => {
const socket = new WebSocket(
process.env.NODE_ENV === 'production' ? "wss://xxxx:3500" : "ws://localhost:3500",
);
setSocket(socket);
socket.addEventListener("message", (event: MessageEvent<string>) => {
handleWebSocketMessage(event, setFutures, setStocks, setBonds, setDollars)
});
socket.addEventListener("error", (event) => {
console.error("WebSocket error:", event);
});
}, []);
Способ, которым я временно исправил эту проблему, заключался в отключении сертификатов SSL на моем сервере веб-сокетов Python и подключении через ws вместо wss. Но это не решение, так как мне нужно, чтобы оно было в безопасности. Дело в том, что когда сервер защищен, он работает только через почтальона.
Я уже пробовал отладку, подключившись к макету wss-сервера в моем соединении с веб-сокетом React, и это сработало отлично, поэтому я пришел к выводу, что проблема не в клиенте. Что может произойти?
🤔 А знаете ли вы, что...
Python популярен в анализе данных и машинном обучении с помощью библиотеки scikit-learn.
Вы используете nginx? Если да, то вам следует добавить в свой файл .conf что-то вроде этого:
location /socket.io/ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:3500;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}