Сокет Proxypass io на сервере Apache в Ubuntu

1

Я пытаюсь развернуть проект узла js socket.io из официального образца на моем сервере (Ubuntu с сервером Apache 2)

Это моя настройка прокси-сервера в /etc/apache2/sites-available/000-default.conf

ProxyPass /ChatSocket http://localhost:3000
ProxyPass /socket.io http://localhost:3000/socket.io
ProxyPass /socket.io ws://localhost:3000/socket.io

Но когда я пытаюсь получить доступ к своему веб-серверу через dns, я не могу подключиться к сокету.

Я получил эту ошибку в консоли браузера

WebSocket connection to 'ws://example.com/socket.io/?EIO=3&transport=websocket&sid=HgU6py-fCl1GFrdsAAAK' failed: Error during WebSocket handshake: Unexpected response code: 400

Возможно, потому что URL-адрес http://example.com/socket.io противоречит ws://example.com/socket.io

Как я могу использовать websocket и http с тем же URL-адресом? Потому что кажется, что http://example.com/socket.io и ws://example.com/socket.io генерируется socket.io из этой строки

var server = require('http').createServer(app);
var io = require('socket.io')(server);

Есть ли другой способ обхода, чтобы исправить это, или развертывание моего приложения jQuery socket.io на моем сервере apache без proxypass?

Теги:
socket.io

1 ответ

1
Лучший ответ

Nevermind, мне удается заставить его работать с RewriteEngine для веб-сокета (ws://)

Это мой 000-default.conf в /etc/apache2/sites-available

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io          [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:3000/%1        [P,L]

ProxyPass /ChatSocket http://localhost:3000
ProxyPassReverse /ChatSocket http://localhost:3000
ProxyPass /socket.io http://localhost:3000/socket.io
ProxyPassReverse /socket.io http://localhost:3000/socket.io

Ещё вопросы

Сообщество Overcoder
Наверх
Меню