MessageWebSocket Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Поддерживает сетевое взаимодействие, позволяющее считывать и записывать целые сообщения с помощью WebSocket.
public ref class MessageWebSocket sealed : IClosable
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class MessageWebSocket final : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class MessageWebSocket final : IClosable
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class MessageWebSocket : System.IDisposable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class MessageWebSocket : System.IDisposable
function MessageWebSocket()
Public NotInheritable Class MessageWebSocket
Implements IDisposable
- Наследование
- Атрибуты
- Реализации
Требования к Windows
Семейство устройств |
Windows 10 (появилось в 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (появилось в v1.0)
|
Возможности приложения |
internetClient
privateNetworkClientServer
|
Комментарии
Класс MessageWebSocket предоставляет абстракцию протокола WebSocket на основе сообщений. При использовании MessageWebSocket все сообщение WebSocket считывается или записывается в одной операции. В отличие от этого, StreamWebSocket позволяет считывать разделы сообщения с каждой операцией чтения, а не требовать, чтобы все сообщение было прочитано в одной операции.
Для сообщений UTF-8 необходимо использовать MessageWebSocket. StreamWebSocket поддерживает только двоичные сообщения.
Обработка исключений
Необходимо написать код для обработки исключений при вызове асинхронных методов в классе MessageWebSocket. Исключения могут возникать из-за ошибок проверки параметров, ошибок разрешения имен и сетевых ошибок. Исключения из сетевых ошибок (например, потеря подключения, сбои подключения и сбои HTTP-сервера) могут произойти в любое время. В результате таких ошибок создаются исключения. Если приложение не обрабатывается, исключение может привести к завершению всего приложения средой выполнения.
Пространство имен Windows.Networking.Sockets имеет удобный вспомогательный метод и перечисление для обработки ошибок при использовании WebSocket. Это удобно, чтобы по-разному обрабатывать в приложении различные сетевые исключения. Приложение также может использовать HRESULT из исключения при ошибках проверки параметров, чтобы получить более подробные сведения об ошибке, вызвавшей исключение.
Дополнительные сведения о возможных исключениях и способах обработки исключений см. в разделе Обработка исключений в сетевых приложениях.
Использование MessageWebSocket в Windows Server 2012
В Windows Server 2012 и Windows Server 2012 R2 Windows.Networking.dll , реализующий большинство классов в пространстве имен Windows.Networking.Sockets , не будет загружаться, если не включена функция Media Foundation. В результате приложения, использующие MessageWebSocket и связанные классы WebSocket в пространстве имен Windows.Networking.Sockets , завершатся сбоем, если компонент Media Foundation отключен. Windows Server 2012 или Windows Server 2012 R2 устанавливается с отключенным компонентом Media Foundation.
Компонент Media Foundation можно включить в Windows Server 2012 или Windows Server 2012 R2 с помощью диспетчер сервера или путем ввода следующего текста в командной строке или скрипте:
dism /online /enable-feature /featurename:ServerMediaFoundation
После включения функции Media Foundation пользователю предлагается перезапустить его. После перезагрузки компьютера классы для сокетов и WebSocket в пространстве имен Windows.Networking.Sockets будут работать должным образом.
Журнал версий
Версия Windows | Версия пакета SDK | Добавленная стоимость |
---|---|---|
1607 | 14393 | ServerCustomValidationRequested |
1803 | 17134 | SendFinalFrameAsync |
1803 | 17134 | SendNonfinalFrameAsync |
Конструкторы
MessageWebSocket() |
Создает объект MessageWebSocket . |
Свойства
Control |
Возвращает данные элемента управления сокета для объекта MessageWebSocket . |
Information |
Возвращает сведения о сокете для объекта MessageWebSocket . |
OutputStream |
Возвращает выходной поток для записи в удаленное сетевое назначение объекта MessageWebSocket . |
Методы
Close() |
Закрывает объект MessageWebSocket и отправляет на сервер пустой закрываемый кадр. |
Close(UInt16, String) |
Закрывает объект MessageWebSocket и указывает причину закрытия. |
ConnectAsync(Uri) |
Запускает асинхронную операцию для подключения к удаленному сетевому назначению в объекте MessageWebSocket . |
Dispose() |
Выполняет определяемые приложением задачи, связанные с удалением, высвобождением или сбросом неуправляемых ресурсов. |
SendFinalFrameAsync(IBuffer) |
Асинхронно (с прогрессом) записывает кадр данных в последовательный поток с семантикой, что это последний кадр в сообщении WebSocket (бит FIN для этого кадра имеет значение 1). Этот метод и SendNonfinalFrameAsync позволяют отправлять отдельные кадры WebSocket. |
SendNonfinalFrameAsync(IBuffer) |
Асинхронно (с ходом выполнения) записывает кадр данных в последовательный поток с семантикой, за которым будет следовать больше кадров для того же сообщения WebSocket (бит FIN в этом кадре имеет значение 0). Этот метод и SendFinalFrameAsync позволяют отправлять отдельные кадры WebSocket. |
SetRequestHeader(String, String) |
Добавляет заголовок HTTP-запроса в сообщение HTTP-запроса, используемое в подтверждении протокола WebSocket объектом MessageWebSocket . |
События
Closed |
Происходит при получении близкого кадра в объекте MessageWebSocket в рамках подтверждения закрытия. |
MessageReceived |
Событие, указывающее, что сообщение получено в объекте MessageWebSocket . |
ServerCustomValidationRequested |
Происходит при проверке нового подключения MessageWebSocket к защищенному URI сервера (wss: protocol). Обработайте это событие, если вы хотите реализовать настраиваемую проверку сервера для подключения. |