Итак, у меня есть сервер WebSocket на C ++, который является полностью автономным объектом - обрабатывает синтаксический анализ заголовка, прием, отправку, все это самостоятельно, прослушивая напрямую порт.
Проблема в том, что он должен работать на сервере вместе с Apache, и это небольшая проблема. Теперь здесь было решение аналогичной проблемы, связанной с mod_proxy, но я надеюсь, что смогу перехватить и перенаправить связь WebSocket, прежде чем Apache даже узнает об этом, возможно, с помощью iptables.
Итак, вопрос в том, можно ли направить трафик на болтать.mysite.net на сервер WebSocket, скажем, на порт 8080, в то время как все остальное, направленное на mysite.net, поступает в Apache, как и ожидалось?
Оказывается, на самом деле это довольно просто; просто запрограммируйте клиента для доступа к серверу по адресу ws://mysite.com:8080
. Несмотря на все разговоры о том, что WebSockets может использовать порт 80, я был весьма удивлен, узнав, что это не так. необходимость к.
К сожалению, с iptables это невозможно, потому что iptables не поддерживает протокол http. Кто-то должен написать ip_conntrack_http, чтобы это действительно могло работать (что-то похожее на ftp conntrack thingie) ;-) До этого момента вам, вероятно, следует использовать apache с mod_proxy или nginx.