主机名中带有用户令牌的 UWP C# .net StreamSocket
UWP C# .net StreamSocket with User Token in HostName
有没有办法格式化 StreamSocket 的主机名以包含用户令牌?当我尝试将 URI 与用户令牌一起使用时,出现 "Parameter is Incorrect" 异常。我在 MessageWebSocket 上取得了成功,但我需要一个 StreamSocket,因为它能够(轻松地)运行 在 Windows 10 UWP 的后台。这是我的代码。任何帮助将不胜感激。
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);
}
I get a "Parameter is Incorrect" exceptions when I try to use a URI with the a user Token.
HostName constructor is not a URI的参数,而是一个包含hostname
或IP地址的字符串。根据hostName
参数的描述,它可以包含以下之一:
- The name of a host that can be resolved by the Domain Name System (DNS) or by another namespace provider.
- The name of a host that matches a string in the following file on the local computer: %WINDIR%\system32\drivers\etc\hosts
- A string that contains an IPv4 or an IPv6 network address of the host.
对于"//example.myexample.com/websocket/dfkjlkdfskldklfdkddkfdkffjf"
,这是一个不符合上述要求的URI,因此HostName
class无法识别它。可以识别example.myexample.com
这样的值。
为什么您可以成功使用 MessageWebSocket
class, this is because MessageWebSocket.ConnectAsync
方法需要您提供的 URI 参数。
but I need a StreamSocket because it is able to (easily) run in the background on Windows 10 UWP.
WebSockets
提供一种使用 HTTP(S) 通过 Web 在客户端和服务器之间进行快速、安全的双向通信的机制。 Socket
可用于与其他设备通信。它们不是一回事,我们不能简单地将WebSockets
转为StreamSocket
。关于uwp中WebSockets
和StreamSockets
的更多细节请参考官方文档Sockets
and WebSockets
.
但是WebSockets
可以在后台使用,你可能不需要StreamSocket
。如果您在后台使用 WebSockets,则必须使用 ControlChannelTrigger. Details for how to use WebSockets with ControlChannelTrigger please reference ControlChannelTrigger with WebSockets.
有没有办法格式化 StreamSocket 的主机名以包含用户令牌?当我尝试将 URI 与用户令牌一起使用时,出现 "Parameter is Incorrect" 异常。我在 MessageWebSocket 上取得了成功,但我需要一个 StreamSocket,因为它能够(轻松地)运行 在 Windows 10 UWP 的后台。这是我的代码。任何帮助将不胜感激。
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);
}
I get a "Parameter is Incorrect" exceptions when I try to use a URI with the a user Token.
HostName constructor is not a URI的参数,而是一个包含hostname
或IP地址的字符串。根据hostName
参数的描述,它可以包含以下之一:
- The name of a host that can be resolved by the Domain Name System (DNS) or by another namespace provider.
- The name of a host that matches a string in the following file on the local computer: %WINDIR%\system32\drivers\etc\hosts
- A string that contains an IPv4 or an IPv6 network address of the host.
对于"//example.myexample.com/websocket/dfkjlkdfskldklfdkddkfdkffjf"
,这是一个不符合上述要求的URI,因此HostName
class无法识别它。可以识别example.myexample.com
这样的值。
为什么您可以成功使用 MessageWebSocket
class, this is because MessageWebSocket.ConnectAsync
方法需要您提供的 URI 参数。
but I need a StreamSocket because it is able to (easily) run in the background on Windows 10 UWP.
WebSockets
提供一种使用 HTTP(S) 通过 Web 在客户端和服务器之间进行快速、安全的双向通信的机制。 Socket
可用于与其他设备通信。它们不是一回事,我们不能简单地将WebSockets
转为StreamSocket
。关于uwp中WebSockets
和StreamSockets
的更多细节请参考官方文档Sockets
and WebSockets
.
但是WebSockets
可以在后台使用,你可能不需要StreamSocket
。如果您在后台使用 WebSockets,则必须使用 ControlChannelTrigger. Details for how to use WebSockets with ControlChannelTrigger please reference ControlChannelTrigger with WebSockets.