Настройка подключения через веб-сокет

Я пытаюсь узнать больше о websocket и его внутренних реализациях. Но до сих пор не могу понять несколько вещей. Я пытался поискать в Google подробное -объяснение, но большинство из них просто дает обзор высокого -уровня. Вот мои сомнения

1. Согласно тому, что я читал, сервер веб-сокетов (C #/ реализация C++ )по умолчанию использует порт 80. Хотя мы можем использовать любой порт, предпочтительнее использовать порт 80, поскольку мы выиграли у меня нет проблем с брандмауэром. Если это так, как мы должны запускать веб-сервер и сервер веб-сокетов на одном и том же порту (80 )?

2. Предположим, что сервер веб-сокетов работает на порту 81, а веб-сервер работает на порту 80.

  1. Итак, когда браузер отправляет начальный HTTP-запрос рукопожатия (Upgrade :websocket ), этот запрос отправляется на порт 81. Верно? Если да, то этот запрос (См. ниже )не имеет никакого отношения к протоколу HTTP.Но все же мы используем заголовки протокола HTTP. Почему?

           GET /mychat HTTP/1.1
           Host: server.example.com
           Upgrade: websocket
           Connection: Upgrade
           Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
           Sec-WebSocket-Protocol: chat
           Sec-WebSocket-Version: 13
           Origin: http://example.com
    
  2. Почему они не используют тот же интерфейс веб-сокетов, который в настоящее время реализован в большинстве браузеров, для установления прямого соединения TCP/IP с заданным портом без каких-либо HTTP-материалов?

3. Существуют ли какие-либо ограничения на размер пакетов или данных/буфера для данных, отправляемых/получаемых от клиента/сервера? Если это так, нужно ли нам формировать данные и обрабатывать их самостоятельно?

4. Всегда ли сервер веб-сокетов должен быть отдельной службой/процессом? Будут ли в будущем (IIS веб-сервера, apache )включать поддержку размещения серверов веб-сокетов в пространстве своего процесса?

7
задан SysAdmin 1 August 2012 в 17:34
поделиться