你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 .NET 的 Azure 通信网络遍历客户端库 - 版本 1.0.0
Azure 通信网络遍历通过提供对低级别 STUN 和 TURN 服务的访问,在实时通信方案和数据传输方案中实现对等机之间的高带宽、低延迟连接。
入门
安装包
使用 NuGet 安装适用于 .NET 的 Azure 通信网络遍历客户端库:
dotnet add package Azure.Communication.NetworkTraversal --version 1.0.0
先决条件
需要一个 Azure 订阅 和一个 通信服务资源 才能使用此包。
若要创建新的通信服务,可以使用 Azure 门户、Azure PowerShell或 .NET 管理客户端库。
验证客户端
可以使用从 Azure 门户中的 Azure 通信资源获取的连接字符串对网络客户端进行身份验证。
// Get a connection string to our Azure Communication resource.
var connectionString = "<connection_string>";
var client = new CommunicationRelayClient(connectionString);
或者,使用终结点和从 Azure 门户中的 Azure 通信资源获取的访问密钥。
var endpoint = new Uri("https://my-resource.communication.azure.com");
var accessKey = "<access_key>";
var client = new CommunicationRelayClient(endpoint, new AzureKeyCredential(accessKey));
客户端还可以选择使用有效的 Active Directory 令牌进行身份验证。
var endpoint = new Uri("https://my-resource.communication.azure.com");
TokenCredential tokenCredential = new DefaultAzureCredential();
var client = new CommunicationRelayClient(endpoint, tokenCredential);
关键概念
CommunicationRelayClient
提供获取 STUN/TURN 服务器 URL 和凭据以供访问的功能。
线程安全
我们保证所有客户端实例方法都是线程安全的,并且彼此独立 (准则) 。 这可确保重用客户端实例的建议始终是安全的,即使在线程之间也是如此。
其他概念
客户端选项 | 访问响应 | 长时间运行的操作 | 处理失败 | 诊断 | 嘲笑 | 客户端生存期
示例
获取用户的中继配置
Response<CommunicationRelayConfiguration> relayConfiguration = await client.GetRelayConfigurationAsync();
DateTimeOffset turnTokenExpiresOn = relayConfiguration.Value.ExpiresOn;
IList<CommunicationIceServer> iceServers = relayConfiguration.Value.IceServers;
Console.WriteLine($"Expires On: {turnTokenExpiresOn}");
foreach (CommunicationIceServer iceServer in iceServers)
{
foreach (string url in iceServer.Urls)
{
Console.WriteLine($"ICE Server Url: {url}");
}
Console.WriteLine($"ICE Server Username: {iceServer.Username}");
Console.WriteLine($"ICE Server Credential: {iceServer.Credential}");
Console.WriteLine($"ICE Server RouteType: {iceServer.RouteType}");
}
获取具有指定 routeType 的用户的中继配置
Response<CommunicationRelayConfiguration> relayConfiguration = await client.GetRelayConfigurationAsync(user,RouteType.Nearest);
DateTimeOffset turnTokenExpiresOn = relayConfiguration.Value.ExpiresOn;
IList<CommunicationIceServer> iceServers = relayConfiguration.Value.IceServers;
Console.WriteLine($"Expires On: {turnTokenExpiresOn}");
foreach (CommunicationIceServer iceServer in iceServers)
{
foreach (string url in iceServer.Urls)
{
Console.WriteLine($"ICE Server Url: {url}");
}
Console.WriteLine($"ICE Server Username: {iceServer.Username}");
Console.WriteLine($"ICE Server Credential: {iceServer.Credential}");
Console.WriteLine($"ICE Server Route Type: {iceServer.RouteType}");
}
疑难解答
TODO
后续步骤
TODO
贡献
本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。 有关详细信息,请访问 cla.microsoft.com。
此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。