Как использовать расширенные элементы управления WebSocket (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]
В этом разделе объясняется, как использовать расширенные элементы управления сокетами при применении MessageWebSocket и StreamWebSocket в приложении среды выполнения Windows.
Что необходимо знать
Технологии
-
Разрешает передачу данных по сети с помощью сокетов и WebSocket.
Необходимые условия
- Примеры данного раздела написаны на JavaScript. Рекомендуется иметь базовое представление о протоколах WebSocket.
Обзор расширенных элементов управления WebSocket
Классы MessageWebSocket и StreamWebSocket следуют одной модели использования расширенных элементов управления. Каждому из названных выше основных классов соответствуют связанные классы для доступа к расширенным элементам управления:
- MessageWebSocketControl — предоставляет элемент управления качеством обслуживания сокета для объекта MessageWebSocket;
- StreamWebSocketControl — предоставляет данные элемента управления сокетами для объекта StreamWebSocket.
Основная модель использования расширенных элементов управления является одинаковой для обоих типов проколов WebSocket. Далее для примера используется StreamWebSocket, но такой же процесс может использоваться для MessageWebSocket.
- Создайте StreamWebSocket.
- Используйте свойство StreamWebSocket.Control, чтобы получить экземпляр StreamWebSocketControl, связанный с объектом StreamWebSocket.
- Чтобы установить дополнительный параметр сокета, задайте свойство StreamWebSocketControl.
Приложение всегда должно устанавливать свойство StreamWebSocketControl перед выполнением операции подключения. Поэтому лучше устанавливать дополнительные параметры сразу после создания сокета. Не пытайтесь задать свойство StreamWebSocketControl после вызова сокетом метода ConnectAsync.
Расширенные элементы управления StreamWebSocket
Для StreamWebSocket существует несколько дополнительных параметров.
- StreamWebSocketControl.NoDelay — указывает, используется ли алгоритм Нагля для объекта StreamWebSocket.
- StreamWebSocketControl.OutboundBufferSizeInBytes — управляет размером буфера отправки (в байтах), который используется при отправке данных для объекта StreamWebSocket.
- StreamWebSocketControl.ProxyCredential — предоставляет прокси-серверу учетные данные для проверки подлинности с использованием схемы проверки подлинности заголовков HTTP для объекта StreamWebSocket.
- StreamWebSocketControl.ServerCredential — предоставляет серверу WebSocket учетные данные для проверки подлинности с использованием схемы проверки подлинности заголовков HTTP для объекта StreamWebSocket.
- StreamWebSocketControl.SupportedProtocols — получает семейство поддерживаемых подпротоколов, объявляемых серверу во время подтверждения подключения.
В качестве примера подробно рассмотрен параметр StreamWebSocketControl.NoDelay. При создании объекта StreamWebSocket для этого параметра по умолчанию должно быть задано значение true, что отключает алгоритм Нагля. Однако если StreamWebSocket будет использоваться для приложения, которое отправляет множество небольших пакетов, и задержка не будет проблемой, то алгоритм Нагля можно включить, задав для параметра StreamWebSocketControl.NoDelay значение false, чтобы уменьшить сетевой трафик.
В следующем примере создается StreamWebSocket, а StreamWebSocketControl.NoDelay присваивается значение false. После этого приложение может подключить StreamWebSocket
var clientWebSocket = new Windows.Networking.Sockets.StreamWebSocket();
// Get the current setting for this option
// This isn't required, but it shows how to get the current setting
var currentSetting = clientWebSocket.control.noDelay;
// Set noDelay to false so that the Nagle algorithm isn't disabled
clientWebSocket.control.noDelay = false;
// Now you can call the ConnectAsync method to connect the StreamWebSocket.
Расширенные элементы управления MessageWebSocket
Многие дополнительные параметры для MessageWebSocket такие же, как для StreamWebSocket, но существует несколько отличий.
- MessageWebSocketControl.MaxMessageSize — контролирует максимальный размер сообщения (в байтах) при настройке сообщения WebSocket для объекта MessageWebSocket.
- MessageWebSocketControl.MessageType — контролирует тип сообщения WebSocket (двоичный или UTF-8) при настройке для объекта MessageWebSocket.
- MessageWebSocketControl.OutboundBufferSizeInBytes — управляет размером буфера отправки (в байтах), который используется при отправке данных для объекта MessageWebSocket.
- MessageWebSocketControl.ProxyCredential — предоставляет прокси-серверу учетные данные для проверки подлинности с использованием схемы проверки подлинности заголовков HTTP для объекта MessageWebSocket.
- MessageWebSocketControl.ServerCredential — предоставляет серверу WebSocket учетные данные для проверки подлинности с использованием схемы проверки подлинности заголовков HTTP для объекта MessageWebSocket.
- MessageWebSocketControl.SupportedProtocols — получает семейство поддерживаемых подпротоколов, объявляемых серверу во время подтверждения подключения.
Параметры для MessageWebSocket устанавливаются практически так же, как в приведенном выше примере.
Замечания
Кроме того, для следующих основных классов существует ряд связанных классов, которые предоставляют доступ к дополнительной информации для управления данными:
- MessageWebSocketInformation — предоставляет информацию о сокете для объекта MessageWebSocket;
- StreamWebSocketInformation — предоставляет информацию о сокете для объекта StreamWebSocket.
Свойства этих классов предоставляют дополнительные сведения о сокете.
Связанные разделы
Прочие ссылки
Подключение с использованием WebSocket
Как подключиться с помощью MessageWebSocket
Как подключиться с помощью StreamWebSocket
Защита соединений WebSocket с использованием TLS/SSL
Ссылки
Примеры