Vynucení směrování provozu na vašem vlastním serveru
V tomto kurzu se dozvíte, jak proxy služby Azure Communication Services volat provoz na vlastních serverech.
V některých situacích může být užitečné mít veškerý klientský provoz směrovaný na server, který můžete řídit. Při inicializaci sady SDK můžete zadat podrobnosti o serverech, do které se má provoz směrovat. Po povolení se veškerý mediální provoz (audio/video/sdílení obrazovky) přesune přes zadané servery TURN místo výchozích hodnot služby Azure Communication Services.
V tomto kurzu se naučíte:
- Nastavte server TURN.
- Nastavte signalizační proxy server.
Požadavky
Nic
Funkce proxy serveru je obecně dostupná od veřejné verze 1.25.1 sady SDK pro volání služeb Azure Communication Services. Při pokusu o použití této funkce se ujistěte, že používáte tuto sadu SDK nebo novější verzi sady SDK. V tomto kurzu se používá verze volací sady SDK 1.13.0-beta.1, kde byla tato funkce poprvé dostupná ve verzi Public Preview.
Proxy volání mediálního provozu
Následující části popisují, jak proxy volat provoz médií.
Co je server TURN?
Často není vytvoření síťového připojení mezi dvěma partnerskými vztahy jednoduché. Přímé připojení nemusí fungovat z následujících důvodů:
- Brány firewall s přísnými pravidly.
- Peers sedí za privátní sítí.
- Počítače spuštěné v prostředí překladu síťových adres (NAT).
K vyřešení těchto problémů se síťovým připojením můžete použít server, který používá protokol Traversal Using Relay NAT (TURN) pro přenos síťového provozu. Služby procházení relací pro NAT (STUN) a TURN servery jsou předávací servery.
Zadejte podrobnosti o serveru TURN sadě SDK.
Chcete-li zadat podrobnosti o serverech TURN, musíte předat podrobnosti o tom, jaký server TURN použít jako součást CallClientOptions
při inicializaci CallClient
. Další informace o tom, jak nastavit volání, najdete v tématu Azure Communication Services Web SDK pro rychlý start o nastavení hlasu a videa.
import { CallClient } from '@azure/communication-calling';
const myTurn1 = {
urls: [
'turn:turn.azure.com:3478?transport=udp',
'turn:turn1.azure.com:3478?transport=udp',
],
username: 'turnserver1username',
credential: 'turnserver1credentialorpass'
};
const myTurn2 = {
urls: [
'turn:20.202.255.255:3478',
'turn:20.202.255.255:3478?transport=tcp',
],
username: 'turnserver2username',
credential: 'turnserver2credentialorpass'
};
// While you are creating an instance of the CallClient (the entry point of the SDK):
const callClient = new CallClient({
networkConfiguration: {
turn: {
iceServers: [
myTurn1,
myTurn2
]
}
}
});
// ...continue normally with your SDK setup and usage.
Důležité
Pokud jste při inicializaci CallClient
zadali podrobnosti o serveru TURN, veškerý mediální provoz prochází výhradně těmito servery TURN. Ostatní kandidáti ICE, kteří se obvykle generují při vytváření volání, nebudou při pokusu o navázání připojení mezi partnerskými vztahy zvažovány. To znamená, že se považují pouze relay
za kandidáty. Další informace o různých typech kandidátů ice naleznete v tématu RTCIceCandidate: type property.
?transport
Pokud parametr dotazu není součástí adresy URL TURN nebo není jedním z udp
parametrů , tcp
nebo tls
hodnot, je výchozím chováním UDP.
Pokud jsou některé z zadaných adres URL neplatné nebo nemají některou z turn:
těchto hodnot , turns:
nebo stun:
schémata, CallClient
inicializace selže a odpovídajícím způsobem vyvolá chyby. Chybové zprávy, které se zobrazí, by vám měly pomoct při řešení potíží.
Referenční informace k rozhraní API pro CallClientOptions
objekt a networkConfiguration
vlastnost v něm naleznete v tématu CallClientOptions.
Nastavení serveru TURN v Azure
Virtuální počítač s Linuxem můžete vytvořit na webu Azure Portal. Další informace najdete v tématu Rychlý start: Vytvoření virtuálního počítače s Linuxem na webu Azure Portal. Pokud chcete nasadit server TURN, použijte coturn. Coturn je bezplatná a opensourcová implementace serveru TURN a STUN pro VoIP a WebRTC.
Po nastavení serveru TURN ho můžete otestovat pomocí pokynů na webové stránce WebRTC Trickle ICE .
Proxy signalizační provoz
Pokud chcete zadat adresu URL proxy serveru, musíte ji předat jako součást CallClientOptions
při inicializaci CallClient
. Další informace o tom, jak nastavit volání, najdete v tématu Azure Communication Services Web SDK pro rychlý start o nastavení hlasu a videa.
import { CallClient } from '@azure/communication-calling';
// While you are creating an instance of the CallClient (the entry point of the SDK):
const callClient = new CallClient({
networkConfiguration: {
proxy: {
url: 'https://myproxyserver.com'
}
}
});
// ...continue normally with your SDK setup and usage.
Poznámka:
Pokud zadaná adresa URL proxy serveru je neplatná, CallClient
inicializace selže a odpovídajícím způsobem vyvolá chyby. Chybové zprávy, které jsou vyvolán vám pomůžou vyřešit problémy.
Referenční informace k rozhraní API pro CallClientOptions
objekt a networkConfiguration
vlastnost v něm naleznete v tématu CallClientOptions.
Nastavení middlewaru signalizačního proxy serveru v Express.js
Ve svém nastavení Express.js serveru můžete také vytvořit middleware proxy, který bude mít všechny adresy URL přesměrované prostřednictvím balíčku npm http-proxy-middleware . Funkce createProxyMiddleware
z daného balíčku by měla zahrnovat to, co potřebujete pro jednoduché nastavení proxy přesměrování. Tady je příklad použití s určitým nastavením možností, které sada SDK potřebuje, aby všechny naše adresy URL fungovaly podle očekávání:
const proxyRouter = (req) => {
// Your router function if you don't intend to set up a direct target
// An example:
if (!req.originalUrl && !req.url) {
return '';
}
const incomingUrl = req.originalUrl || req.url;
if (incomingUrl.includes('/proxy')) {
return 'https://microsoft.com/forwarder/';
}
return incomingUrl;
}
const myProxyMiddleware = createProxyMiddleware({
target: 'https://microsoft.com', // This will be ignored if a router function is provided, but createProxyMiddleware still requires this to be passed in (see its official docs on the npm page for the most recent changes)
router: proxyRouter,
changeOrigin: true,
secure: false, // If you have proper SSL setup, set this accordingly
followRedirects: true,
ignorePath: true,
ws: true,
logLevel: 'debug'
});
// And finally pass in your proxy middleware to your express app depending on your URL/host setup
app.use('/proxy', myProxyMiddleware);
Tip
Pokud máte problémy s PROTOKOLem SSL, podívejte se na balíček cors .
Nastavení signalizačního proxy serveru v Azure
Virtuální počítač s Linuxem můžete vytvořit na webu Azure Portal a nasadit na něj server NGINX. Další informace najdete v tématu Rychlý start: Vytvoření virtuálního počítače s Linuxem na webu Azure Portal.
Tady je konfigurace NGINX, kterou můžete použít jako ukázku:
events {
multi_accept on;
worker_connections 65535;
}
http {
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
map $request_method $access_control_header {
OPTIONS '*';
}
server {
listen <port_you_want_listen_on> ssl;
ssl_certificate <path_to_your_ssl_cert>;
ssl_certificate_key <path_to_your_ssl_key>;
location ~* ^/(.*?\.(com|net)(?::[\d]+)?)/(.*)$ {
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin '*' always;
add_header Access-Control-Allow-Credentials 'true' always;
add_header Access-Control-Allow-Headers '*' always;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Max-Age 1728000;
add_header Content-Type 'text/plain';
add_header Content-Length 0;
return 204;
}
resolver 1.1.1.1;
set $ups_host $1;
set $r_uri $3;
rewrite ^/.*$ /$r_uri break;
proxy_set_header Host $ups_host;
proxy_ssl_server_name on;
proxy_ssl_protocols TLSv1.2;
proxy_ssl_ciphers DEFAULT;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Authorization;
proxy_pass_request_headers on;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Proxy "";
proxy_set_header Access-Control-Allow-Origin $access_control_header;
proxy_pass https://$ups_host;
proxy_redirect https://$ups_host https://$host/$ups_host;
proxy_intercept_errors on;
error_page 301 302 307 = @process_redirect;
error_page 400 405 = @process_error_response;
}
location @process_redirect {
set $saved_redirect_location '$upstream_http_location';
resolver 1.1.1.1;
proxy_pass $saved_redirect_location;
add_header X-DBUG-MSG "301" always;
}
location @process_error_response {
add_header Access-Control-Allow-Origin * always;
}
}
}
Funkce proxy serveru nebude k dispozici pro identity Teams a akce interoperability Teams v Azure Communication Services.
Proxy volání mediálního provozu
Následující části popisují, jak proxy volat provoz médií.
Co je server TURN?
Často není vytvoření síťového připojení mezi dvěma partnerskými vztahy jednoduché. Přímé připojení nemusí fungovat z následujících důvodů:
- Brány firewall s přísnými pravidly.
- Peers sedí za privátní sítí.
- Počítače spuštěné v prostředí překladu síťových adres (NAT).
K vyřešení těchto problémů se síťovým připojením můžete použít server, který používá protokol Traversal Using Relay NAT (TURN) pro přenos síťového provozu. Služby procházení relací pro NAT (STUN) a TURN servery jsou předávací servery.
Zadejte podrobnosti o serveru TURN pomocí sady SDK.
Chcete-li zadat podrobnosti o serverech TURN, musíte předat podrobnosti o tom, jaký server TURN použít jako součást CallClientOptions
při inicializaci CallClient
. Další informace o tom, jak nastavit volání, najdete v sadě SDK pro iOS služby Azure Communication Services v tomto rychlém startu, jak nastavit hlas a video.
let callClientOptions = new CallClientOptions()
let callNetworkOptions = new CallNetworkOptions()
let iceServer = IceServer()
iceServer.urls = ["turn:20.202.255.255"]
iceServer.udpPort = 3478
iceServer.realm = "turn.azure.com"
iceServer.username = "turnserver1username"
iceServer.password = "turnserver1password"
callNetworkOptions.iceServers = [iceServer]
// Supply the network options when creating an instance of the CallClient
callClientOptions.network = callNetworkOptions
self.callClient = CallClient(options: callClientOptions);
Důležité
Pokud jste při inicializaci CallClient
zadali podrobnosti o serveru TURN, veškerý mediální provoz prochází výhradně těmito servery TURN. Ostatní kandidáti ICE, kteří se obvykle generují při vytváření volání, nebudou při pokusu o navázání připojení mezi partnerskými vztahy zvažovány. To znamená, že se považují pouze relay
za kandidáty. Další informace o různých typech kandidátů ice naleznete v tématu RTCIceCandidate: type property.
Sada Android SDK v současné době podporuje pouze jednu adresu IPv4 a protokol UDP pro proxy média. Pokud není zadaný port UDP, použije se výchozí port UDP 3478. Sada SDK vyvolá Failed to set media proxy
chybu při volání setIceServer
s nepodporovaným vstupem následujícím způsobem:
- V seznamu IceServers je k dispozici více než jeden server ICE.
- V seznamu adres URL serveru IceServer je k dispozici více než jedna adresa URL.
- Adresa URL protokolu IPv6 je uvedená v seznamu adres URL.
- Je k dispozici pouze port TCP.
- Informace o sférách nejsou k dispozici.
Pokud zadané informace o serveru ICE jsou neplatné, CallClient
inicializace selže a odpovídajícím způsobem vyvolá chyby.
Nastavení serveru TURN v Azure
Virtuální počítač s Linuxem můžete vytvořit na webu Azure Portal. Další informace najdete v tématu Rychlý start: Vytvoření virtuálního počítače s Linuxem na webu Azure Portal. Pokud chcete nasadit server TURN, použijte coturn. Coturn je bezplatná a opensourcová implementace serveru TURN a STUN pro VoIP a WebRTC.
Po nastavení serveru TURN ho můžete otestovat pomocí pokynů na webové stránce WebRTC Trickle ICE .
Proxy signalizační provoz
Pokud chcete zadat adresu URL proxy serveru, musíte ji předat jako součást CallClientOptions
jeho vlastnosti Network
při inicializaci CallClient
. Další informace o tom, jak nastavit volání, najdete v sadě SDK pro iOS služby Azure Communication Services v tomto rychlém startu, jak nastavit hlas a video.
let callClientOptions = CallClientOptions()
let callNetworkOptions = CallNetworkOptions()
callNetworkOptions.proxyUrl = proxyUrl
callClientOptions.network = callNetworkOptions
self.callClient = CallClient(options: callClientOptions)
// ...continue normally with your SDK setup and usage.
Nastavení signalizačního proxy serveru v Azure
Virtuální počítač s Linuxem můžete vytvořit na webu Azure Portal a nasadit na něj server NGINX. Další informace najdete v tématu Rychlý start: Vytvoření virtuálního počítače s Linuxem na webu Azure Portal.
Tady je konfigurace NGINX, kterou můžete použít jako ukázku:
events {
multi_accept on;
worker_connections 65535;
}
http {
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
map $request_method $access_control_header {
OPTIONS '*';
}
server {
listen <port_you_want_listen_on> ssl;
ssl_certificate <path_to_your_ssl_cert>;
ssl_certificate_key <path_to_your_ssl_key>;
location ~* ^/(.*?\.(com|net)(?::[\d]+)?)/(.*)$ {
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin '*' always;
add_header Access-Control-Allow-Credentials 'true' always;
add_header Access-Control-Allow-Headers '*' always;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Max-Age 1728000;
add_header Content-Type 'text/plain';
add_header Content-Length 0;
return 204;
}
resolver 1.1.1.1;
set $ups_host $1;
set $r_uri $3;
rewrite ^/.*$ /$r_uri break;
proxy_set_header Host $ups_host;
proxy_ssl_server_name on;
proxy_ssl_protocols TLSv1.2;
proxy_ssl_ciphers DEFAULT;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Authorization;
proxy_pass_request_headers on;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Proxy "";
proxy_set_header Access-Control-Allow-Origin $access_control_header;
proxy_pass https://$ups_host;
proxy_redirect https://$ups_host https://$host/$ups_host;
proxy_intercept_errors on;
error_page 301 302 307 = @process_redirect;
error_page 400 405 = @process_error_response;
}
location @process_redirect {
set $saved_redirect_location '$upstream_http_location';
resolver 1.1.1.1;
proxy_pass $saved_redirect_location;
add_header X-DBUG-MSG "301" always;
}
location @process_error_response {
add_header Access-Control-Allow-Origin * always;
}
}
}
Funkce proxy serveru nebude k dispozici pro identity Teams a akce interoperability Teams v Azure Communication Services.
Proxy volání mediálního provozu
Následující části popisují, jak proxy volat provoz médií.
Co je server TURN?
Často není vytvoření síťového připojení mezi dvěma partnerskými vztahy jednoduché. Přímé připojení nemusí fungovat z následujících důvodů:
- Brány firewall s přísnými pravidly.
- Peers sedí za privátní sítí.
- Počítače spuštěné v prostředí překladu síťových adres (NAT).
K vyřešení těchto problémů se síťovým připojením můžete použít server, který používá protokol Traversal Using Relay NAT (TURN) pro přenos síťového provozu. Služby procházení relací pro NAT (STUN) a TURN servery jsou předávací servery.
Zadejte podrobnosti o serveru TURN pomocí sady SDK.
Chcete-li zadat podrobnosti o serverech TURN, musíte předat podrobnosti o tom, jaký server TURN použít jako součást CallClientOptions
při inicializaci CallClient
. Další informace o tom, jak nastavit volání, najdete v sadě Sdk služby Azure Communication Services pro Android v tomto rychlém startu o nastavení hlasu a videa.
CallClientOptions callClientOptions = new CallClientOptions();
CallNetworkOptions callNetworkOptions = new CallNetworkOptions();
IceServer iceServer = new IceServer();
iceServer.setUrls(Arrays.asList("turn:20.202.255.255"));
iceServer.setUdpPort(3478);
iceServer.setRealm("turn.azure.com"); // Realm information is required.
iceServer.setUsername("turnserver1username");
iceServer.setPassword("turnserver1password");
callNetworkOptions.setIceServers(Arrays.asList(iceServer));
// Supply the network options when creating an instance of the CallClient
callClientOptions.setNetwork(callNetworkOptions);
CallClient callClient = new CallClient(callClientOptions);
Důležité
Pokud jste při inicializaci CallClient
zadali podrobnosti o serveru TURN, veškerý mediální provoz prochází výhradně těmito servery TURN. Ostatní kandidáti ICE, kteří se obvykle generují při vytváření volání, nebudou při pokusu o navázání připojení mezi partnerskými vztahy zvažovány. To znamená, že se považují pouze relay
za kandidáty. Další informace o různých typech kandidátů ice naleznete v tématu RTCIceCandidate: type property.
Sada Android SDK v současné době podporuje pouze jednu adresu IPv4 a protokol UDP pro proxy média. Pokud není zadaný port UDP, použije se výchozí port UDP 3478. Sada SDK vyvolá Failed to set media proxy
chybu při volání setIceServer
s nepodporovaným vstupem následujícím způsobem:
- V seznamu IceServers je k dispozici více než jeden server ICE.
- V seznamu adres URL serveru IceServer je k dispozici více než jedna adresa URL.
- Adresa URL protokolu IPv6 je uvedená v seznamu adres URL.
- Je k dispozici pouze port TCP.
- Informace o sférách nejsou k dispozici.
Pokud zadané informace o serveru ICE jsou neplatné, CallClient
inicializace selže a odpovídajícím způsobem vyvolá chyby.
Nastavení serveru TURN v Azure
Virtuální počítač s Linuxem můžete vytvořit na webu Azure Portal. Další informace najdete v tématu Rychlý start: Vytvoření virtuálního počítače s Linuxem na webu Azure Portal. Pokud chcete nasadit server TURN, použijte coturn. Coturn je bezplatná a opensourcová implementace serveru TURN a STUN pro VoIP a WebRTC.
Po nastavení serveru TURN ho můžete otestovat pomocí pokynů na webové stránce WebRTC Trickle ICE .
Proxy signalizační provoz
Pokud chcete zadat adresu URL proxy serveru, musíte ji předat jako součást CallClientOptions
jeho vlastnosti Network
při inicializaci CallClient
. Další informace o tom, jak nastavit volání, najdete v sadě Sdk služby Azure Communication Services pro Android v tomto rychlém startu o nastavení hlasu a videa.
CallClientOptions callClientOptions = new CallClientOptions();
CallNetworkOptions callNetworkOptions = new CallNetworkOptions();
callNetworkOptions.setProxyUrl("https://myproxyserver.com");
callClientOptions.setNetwork(callNetworkOptions);
CallClient callClient = new CallClient(callClientOptions);
// ...continue normally with your SDK setup and usage.
Nastavení signalizačního proxy serveru v Azure
Virtuální počítač s Linuxem můžete vytvořit na webu Azure Portal a nasadit na něj server NGINX. Další informace najdete v tématu Rychlý start: Vytvoření virtuálního počítače s Linuxem na webu Azure Portal.
Tady je konfigurace NGINX, kterou můžete použít jako ukázku:
events {
multi_accept on;
worker_connections 65535;
}
http {
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
map $request_method $access_control_header {
OPTIONS '*';
}
server {
listen <port_you_want_listen_on> ssl;
ssl_certificate <path_to_your_ssl_cert>;
ssl_certificate_key <path_to_your_ssl_key>;
location ~* ^/(.*?\.(com|net)(?::[\d]+)?)/(.*)$ {
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin '*' always;
add_header Access-Control-Allow-Credentials 'true' always;
add_header Access-Control-Allow-Headers '*' always;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Max-Age 1728000;
add_header Content-Type 'text/plain';
add_header Content-Length 0;
return 204;
}
resolver 1.1.1.1;
set $ups_host $1;
set $r_uri $3;
rewrite ^/.*$ /$r_uri break;
proxy_set_header Host $ups_host;
proxy_ssl_server_name on;
proxy_ssl_protocols TLSv1.2;
proxy_ssl_ciphers DEFAULT;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Authorization;
proxy_pass_request_headers on;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Proxy "";
proxy_set_header Access-Control-Allow-Origin $access_control_header;
proxy_pass https://$ups_host;
proxy_redirect https://$ups_host https://$host/$ups_host;
proxy_intercept_errors on;
error_page 301 302 307 = @process_redirect;
error_page 400 405 = @process_error_response;
}
location @process_redirect {
set $saved_redirect_location '$upstream_http_location';
resolver 1.1.1.1;
proxy_pass $saved_redirect_location;
add_header X-DBUG-MSG "301" always;
}
location @process_error_response {
add_header Access-Control-Allow-Origin * always;
}
}
}
Funkce proxy serveru nebude k dispozici pro identity Teams a akce interoperability Teams v Azure Communication Services.
Proxy volání mediálního provozu
Následující části popisují, jak proxy volat provoz médií.
Co je server TURN?
Často není vytvoření síťového připojení mezi dvěma partnerskými vztahy jednoduché. Přímé připojení nemusí fungovat z následujících důvodů:
- Brány firewall s přísnými pravidly.
- Peers sedí za privátní sítí.
- Počítače spuštěné v prostředí překladu síťových adres (NAT).
K vyřešení těchto problémů se síťovým připojením můžete použít server, který používá protokol Traversal Using Relay NAT (TURN) pro přenos síťového provozu. Služby procházení relací pro NAT (STUN) a TURN servery jsou předávací servery.
Zadejte podrobnosti o serveru TURN pomocí sady SDK.
Chcete-li zadat podrobnosti o serverech TURN, musíte předat podrobnosti o tom, jaký server TURN použít jako součást CallClientOptions
při inicializaci CallClient
. Další informace o tom, jak nastavit volání, najdete v tématu Azure Communication Services Windows SDK v tomto rychlém startu o nastavení hlasu a videa.
CallClientOptions callClientOptions = new CallClientOptions();
CallNetworkOptions callNetworkOptions = new CallNetworkOptions();
IceServer iceServer = new IceServer();
iceServer.Uris = new List<Uri>() { new Uri("turn:20.202.255.255") }.AsReadOnly();
iceServer.UdpPort = 3478;
iceServer.Realm = "turn.azure.com";
iceServer.Username = "turnserver1username";
iceServer.Password = "turnserver1password";
callNetworkOptions.IceServers = new List<IceServer>() { iceServer }.AsReadOnly();
// Supply the network options when creating an instance of the CallClient
callClientOptions.Network = callNetworkOptions;
CallClient callClient = new CallClient(callClientOptions);
Důležité
Pokud jste při inicializaci CallClient
zadali podrobnosti o serveru TURN, veškerý mediální provoz prochází výhradně těmito servery TURN. Ostatní kandidáti ICE, kteří se obvykle generují při vytváření volání, nebudou při pokusu o navázání připojení mezi partnerskými vztahy zvažovány. To znamená, že se považují pouze relay
za kandidáty. Další informace o různých typech kandidátů ice naleznete v tématu RTCIceCandidate: type property.
Sada Android SDK v současné době podporuje pouze jednu adresu IPv4 a protokol UDP pro proxy média. Pokud není zadaný port UDP, použije se výchozí port UDP 3478. Sada SDK vyvolá Failed to set media proxy
chybu při volání setIceServer
s nepodporovaným vstupem následujícím způsobem:
- V seznamu IceServers je k dispozici více než jeden server ICE.
- V seznamu adres URL serveru IceServer je k dispozici více než jedna adresa URL.
- Adresa URL protokolu IPv6 je uvedená v seznamu adres URL.
- Je k dispozici pouze port TCP.
- Informace o sférách nejsou k dispozici.
Pokud zadané informace o serveru ICE jsou neplatné, CallClient
inicializace selže a odpovídajícím způsobem vyvolá chyby.
Nastavení serveru TURN v Azure
Virtuální počítač s Linuxem můžete vytvořit na webu Azure Portal. Další informace najdete v tématu Rychlý start: Vytvoření virtuálního počítače s Linuxem na webu Azure Portal. Pokud chcete nasadit server TURN, použijte coturn. Coturn je bezplatná a opensourcová implementace serveru TURN a STUN pro VoIP a WebRTC.
Po nastavení serveru TURN ho můžete otestovat pomocí pokynů na webové stránce WebRTC Trickle ICE .
Proxy signalizační provoz
Pokud chcete zadat adresu URL proxy serveru, musíte ji předat jako součást CallClientOptions
jeho vlastnosti Network
při inicializaci CallClient
. Další informace o tom, jak nastavit volání, najdete v tématu Azure Communication Services Windows SDK v tomto rychlém startu o nastavení hlasu a videa.
CallClientOptions callClientOptions = new CallClientOptions();
CallNetworkOptions callNetworkOptions = new CallNetworkOptions();
callNetworkOptions.ProxyUri = new Uri("https://myproxyserver.com");
callClientOptions.Network = callNetworkOptions;
CallClient callClient = new CallClient(callClientOptions);
// ...continue normally with your SDK setup and usage.
Nastavení signalizačního proxy serveru v Azure
Virtuální počítač s Linuxem můžete vytvořit na webu Azure Portal a nasadit na něj server NGINX. Další informace najdete v tématu Rychlý start: Vytvoření virtuálního počítače s Linuxem na webu Azure Portal.
Tady je konfigurace NGINX, kterou můžete použít jako ukázku:
events {
multi_accept on;
worker_connections 65535;
}
http {
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
map $request_method $access_control_header {
OPTIONS '*';
}
server {
listen <port_you_want_listen_on> ssl;
ssl_certificate <path_to_your_ssl_cert>;
ssl_certificate_key <path_to_your_ssl_key>;
location ~* ^/(.*?\.(com|net)(?::[\d]+)?)/(.*)$ {
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin '*' always;
add_header Access-Control-Allow-Credentials 'true' always;
add_header Access-Control-Allow-Headers '*' always;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Max-Age 1728000;
add_header Content-Type 'text/plain';
add_header Content-Length 0;
return 204;
}
resolver 1.1.1.1;
set $ups_host $1;
set $r_uri $3;
rewrite ^/.*$ /$r_uri break;
proxy_set_header Host $ups_host;
proxy_ssl_server_name on;
proxy_ssl_protocols TLSv1.2;
proxy_ssl_ciphers DEFAULT;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Authorization;
proxy_pass_request_headers on;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Proxy "";
proxy_set_header Access-Control-Allow-Origin $access_control_header;
proxy_pass https://$ups_host;
proxy_redirect https://$ups_host https://$host/$ups_host;
proxy_intercept_errors on;
error_page 301 302 307 = @process_redirect;
error_page 400 405 = @process_error_response;
}
location @process_redirect {
set $saved_redirect_location '$upstream_http_location';
resolver 1.1.1.1;
proxy_pass $saved_redirect_location;
add_header X-DBUG-MSG "301" always;
}
location @process_error_response {
add_header Access-Control-Allow-Origin * always;
}
}
}