websockets: они разделяют связь? - PullRequest
4 голосов
/ 02 июня 2011

Если у меня есть запросы на несколько ресурсов, разделяют ли они соединение? Так что, если у меня есть эти запросы:

  • WS: //someserver.com/path/somedata1
  • WS: //someserver.com/path/somedata2
  • WS: //somsserver.com/anotherpath/someotherdata

Из того, что я прочитал до сих пор, мне пришлось бы создать 3 веб-сокета, чтобы получить данные из этих URL. Все примеры, которые я видел, открывают соединение, получают данные и закрывают соединение. Но если я создал 3 веб-сокета, они (под обложками) разделяют одно соединение с someserver.com? или они 3 отдельных соединения? имеется в виду 3 гнезда на каждой стороне ссылки и т. д.

1 Ответ

4 голосов
/ 02 июня 2011

В рабочей группе постоянно обсуждается вопрос автоматического получения соединений веб-сокетов с одним и тем же сервером, но не существует никакой реализации, поддерживающей это, поэтому, если вы откроете три подключения к веб-сокетам, вы получите три сокета-соединения TCP под капотом.

Однако, если вы управляете и клиентом, и сервером, то, вероятно, у вашего приложения нет причин открывать три отдельных соединения для отдельных URL-адресов.Просто откройте одно соединение, и тогда в вашем протоколе уровня приложения есть способ указать нужный вам ресурс.Кроме того, одно из больших преимуществ WebSockets перед HTTP-соединениями заключается в том, что соединение остается открытым и является полнодуплексным, двунаправленным и основанным на сообщениях.Часто текущие приложения WebSocket предпочитают отправлять сообщения JSON туда и обратно, но, как только вы установили соединение WebSocket, вы можете отправлять все, что хотите, туда и обратно (в настоящее время ограничено тем, что вы можете кодировать в строки UTF-8, но необработанный двоичный файл будет поддерживаться вбудущее).

URL, который является частью соединения WebSocket, на самом деле является еще одной частью рукопожатия WebSocket.Если в качестве конфигурации сервера используется веб-сервер, который обновляет подключения к серверу WebSockets, то URL-адрес можно использовать для выбора сервера WebSockets, к которому будет передаваться соединение.Тем не менее, если у вас есть сервер WebSockets, отвечающий на соединения, то URL-адрес - это просто еще один фрагмент данных в рукопожатии, и сервер может решить сделать с URL-адрес все, что ему нужно.

...