я получаю «неверный параметр» исключение, когда я пытаюсь использовать URI с жетоном пользователя.
Параметр HostName constructor не URI, но строка, которая содержит hostname
или IP-адрес. Согласно описанию параметра hostName
, он может содержать одно из следующих действий:
- имени хоста, который может быть решен с помощью системы доменных имен (DNS) или другого поставщик пространства имен.
- Имя хоста, которое соответствует строке в следующем файле на локальном компьютере:% WINDIR% \ system32 \ drivers \ etc \ hosts
- Строка, содержащая сетевой адрес IPv4 или сетевой адрес IPv6 хоста.
Для "//example.myexample.com/websocket/dfkjlkdfskldklfdkddkfdkffjf"
, это URI, которые не соответствуют указанным выше требованиям, так что она не может быть признана HostName
класса. Значение, такое как example.myexample.com
, может быть распознано.
Для чего вы можете успешно использовать класс MessageWebSocket
, это потому, что для метода MessageWebSocket.ConnectAsync
требуется параметр URI, как вы указали.
, но мне нужен StreamSocket, потому что он (легко) может работать в фоновом режиме на Windows 10 UWP.
WebSockets
обеспечивают механизм для быстрой и безопасной двусторонней связи между клиентом и сервером через сеть, используя HTTP (S). Socket
может использоваться для связи с другим устройством. Это не то же самое, мы не можем просто перевести WebSockets
в StreamSocket
. Более подробную информацию о WebSockets
и StreamSockets
в uwp, пожалуйста, обратитесь к официальным документам Sockets
и WebSockets
.
Но WebSockets
может быть использован в фоновом режиме, вам может не понадобиться StreamSocket
. Если вы используете WebSockets в фоновом режиме, вы должны использовать ControlChannelTrigger. Подробнее о том, как использовать WebSockets с ControlChannelTrigger, пожалуйста, обращайтесь к ControlChannelTrigger with WebSockets.
Спасибо за это. Теперь я использую ControlChannelTrigger, и он успешно запускает мою фоновое задание, когда данные поступают через MessageWebSocket. С тех пор я искал, как получить данные, полученные по сокету, в фоновое задание, чтобы я мог его обработать. До сих пор я ничего не нашел, объясняя процесс. –
@JamesB, попробуйте указать [этот образец] (https://code.msdn.microsoft.com/windowsapps/ControlChannelTrigger-91f6bed8). Кстати, если мой ответ помог вам, отметьте как принято.Если у вас все еще есть новые проблемы, вы можете открыть новый поток. –