Проблема с портом Websocket, потому что уже используется? - PullRequest
5 голосов
/ 08 июля 2011

На основании экспертной рекомендации IANA протокол WebSocket по умолчанию использует порт 80 для обычных подключений WebSocket.

Как заставить мой веб-сокет прослушивать порт 80, когда сервер Apache уже прослушивает этот порт?

Я заставил его работать, когда мой WebSocket использовал порт 12345, но я не хочу открывать всем этот порт, и IANA рекомендует порт 80 ... но я не понимаю, как заставить работать этот порт?

Идея № 1

Я прочитал, что для сервера Jabber вы можете использовать Apache для перенаправления вызова. Вот пример с этого сайта :

<VirtualHost *:80>
    Servername yourdomain.com
    DocumentRoot /var/www
    AddDefaultCharset UTF-8
    RewriteEngine On
    RewriteRule ^/http-bind/ http://jabber.yourdomain.com:5280/http-bind/ [P]
</VirtualHost>

Может быть, я могу сделать что-то подобное с веб-сокетом ... что ты думаешь?

Ответы [ 4 ]

1 голос
/ 20 июля 2012

Протокол веб-сокета использует порт 80 (HTTP) или 443 (HTTPS). Мы использовали порт 80 для нашего веб-сервера и порт 443 для веб-сокета. Это предотвращает конфликт, но все еще следует стандарту.

1 голос
/ 08 июля 2011

Ты не. Правило в каждой операционной системе, о которой я знаю, - это один процесс, один порт. И это имеет смысл. Если у вас есть два процесса, слушающих один и тот же порт, то кто скажет, какой из них должен с ним работать? Вам придется выставить какой-нибудь другой порт на этой машине.

0 голосов
/ 11 июля 2011

Я прочитал, что для сервера Jabber вы можете использовать Apache для перенаправления вызова.Вот пример с этого сайта :

<VirtualHost *:80>
    Servername yourdomain.com
    DocumentRoot /var/www
    AddDefaultCharset UTF-8
    RewriteEngine On
    RewriteRule ^/http-bind/ http://jabber.yourdomain.com:5280/http-bind/ [P]
</VirtualHost>

Может быть, я могу сделать что-то подобное с веб-сокетом ... что вы думаете?

0 голосов
/ 08 июля 2011

Вы не можете.Это фундаментальный принцип проектирования библиотеки сокетов, согласно которому номер порта идентифицирует одну конечную точку для сетевого интерфейса.Если Apache или любая другая программа имеет порт 80, тогда он принадлежит этой программе и только этой программе.

Подумайте об этом, если бы вы каким-то образом «поделили» порт 80 с Apache, как я мог выбрать, какой процесс отправить?мое сообщение для?

Возможно, что один процесс прослушивает один сетевой интерфейс (скажем, Apache, использующий порт 80 в вашей локальной сети Ethernet), а другой процесс использует тот же номер порта на другом интерфейсе (скажем, прокси-сервер, использующий порт 80).на вашей беспроводной локальной сети).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...