2016-04-21 6 views
0

Я работаю на сервере, который прослушивает порт 80Как запустить сокет и сервер веб-сервера на одном и том же порту?

Я бы хотел, чтобы как родные, так и клиенты websocket подключались к моему серверу.

Работает только в том случае, если websockify работает на другом порту и отправляет трафик на сервер сокетов.

К сожалению, websockify не задокументирован, и нет доступных учебных пособий.

С чего начать, если бы я хотел создать только один сервер, который прослушивает только один порт и принимает как сетевые, так и родные сокеты TCP?

+0

такой же port одновременно время? –

+0

Да, тот же порт, в то же время –

ответ

3

Если ваш сервер прослушивает соединения на порту 80, то он говорит http? Потому что, если нет, не слушайте порт 80: Порт 80 хорошо известен как перенос трафика HTTP.

Далее - ipaddress и порт вместе являются уникальными идентификаторами конечной точки. Если удаленный клиент подключается к вашему серверу на порту 80, за исключением IP-адреса назначения и порта, нет другой информации, которую сетевой уровень должен определить, какое приложение, прослушивающее порт 80, заслуживает пакет. Учитывая, что предоставление нескольких IP-адресов довольно сложно - невозможно по NAT - единственной информацией, которая действительно доступна для маршрутизации пакета, является правильный порт. Таким образом, вы просто не можете прослушивать два приложения в одном и том же порту.

Наконец, websockets ведут себя как родные сокеты, ПОСЛЕ первоначального согласования HTTP. Это означает, что вместо использования websocksify вы можете научить ваше собственное серверное приложение обнаруживать попытку подключения с помощью клиента websocket и, возможно, выполнить начальное согласование, прежде чем перейти в «родной» режим.

Writing Websocket Servers дает краткое описание того, что ваш собственный сервер потребуется реализовать.

+0

Я использую порт 80, потому что в некоторых сетях порты, отличные от 80 и 443, отключены, поэтому эти клиенты не могли подключиться к серверу. –

+0

Нет реальной защиты от невежественных системных администраторов: / –

-2

Если вы посмотрите WebSocket, вы увидите, что это протокол по уровню TCP. Таким образом, ваш серверный сокет может связываться только один раз с портом 80, и вам решать, что вы будете использовать простой TCP, WebSocket или собственный протокол. Магии нет, что позволяет переключиться с WebSocket на TCP и наоборот.

+0

не был моим нисходящим сигналом, но да, вы можете переключиться ... волшебство - это заголовок HTTP-соединения с обновлением (задокументированный ссылкой на ссылку), что позволяет переключать TCP из HTTP в WebSocket. .. см. также Sec-WebSocket-Version ... – mark

+0

Спасибо за указание, прочитает об этом. – karastojko

+0

Это зависит от вас от использования HTP. WebSockets - это суб-протокол HTTP. – EJP

Смежные вопросы