2017-01-02 6 views
0

Есть ли способ форматировать HostName для StreamSocket, чтобы включить токен пользователя? Я получаю исключения «Параметр неверен», когда я пытаюсь использовать URI с пользовательским токеном. У меня был успех с MessageWebSocket, но мне нужен StreamSocket, потому что он (легко) может работать в фоновом режиме в Windows 10 UWP. Вот мой код. Любая помощь будет принята с благодарностью.UWP C# .net StreamSocket с User Token в HostName

public static async void ConnectToStreamSocket() 
    { 
     StreamSocket socket = new StreamSocket(); 
     string hostUri = "//example.myexample.com/websocket/dfkjlkdfskldklfdkddkfdkffjf"; 
     HostName host = new HostName(hostUri);   
     string proto = "wss"; 
     await socket.ConnectAsync(host, proto); 
    } 

ответ

0

я получаю «неверный параметр» исключение, когда я пытаюсь использовать 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.

+0

Спасибо за это. Теперь я использую ControlChannelTrigger, и он успешно запускает мою фоновое задание, когда данные поступают через MessageWebSocket. С тех пор я искал, как получить данные, полученные по сокету, в фоновое задание, чтобы я мог его обработать. До сих пор я ничего не нашел, объясняя процесс. –

+0

@JamesB, попробуйте указать [этот образец] (https://code.msdn.microsoft.com/windowsapps/ControlChannelTrigger-91f6bed8). Кстати, если мой ответ помог вам, отметьте как принято.Если у вас все еще есть новые проблемы, вы можете открыть новый поток. –

 Смежные вопросы

  • Нет связанных вопросов^_^