Я разрабатываю информационный дисплей, который должен отображать данные в режиме реального времени. Поэтому я использую сервер ws на сервере NodeJS и пакет isomorphic-ws для подключения к серверу. Код
const WebSocket = require("isomorphic-ws");
const ws = new WebSocket(
"ws://<local-ip>:3001/endpoint"
);
ws.onmessage = console.log;
ws.onerror = console.log;
прекрасно работает и с моим доменом в среде nodejs. Поэтому в браузере код работает только с локальным ip моего сервера.
В браузере я получаю 404. Используя мой домен.
Конфигурация Apache 2:
<VirtualHost *:80>
ServerName api.my-domain.de
ProxyPass / http://127.0.0.1:3001/
ProxyPassReverse / http://127.0.0.1:3001/
RewriteEngine on
RewriteCond %{SERVER_NAME} =api.my-domain.de [NC]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*) http://localhost:3001/$1 [P,L]
RewriteCond %{SERVER_NAME} =api.my-domain.de [NC]
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://localhost:3001/$1 [P,L]
</VirtualHost>
Спасибо за помощь!
PS: Если кто-томожет помочь мне изменить мой конфиг для соединений websocket с шифрованием ssl, это тоже было бы неплохо! (Может быть, это просто что-то вроде копирования блока и изменения порта на 443?)
РЕДАКТИРОВАТЬ: я теперь понял, что Chrome не позволяет подключаться к незащищенным каналам websocket. Теперь мне просто нужно знать, как я могу изменить свой конфиг для поддержки wss.