Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Application Gateway, tüm ağ geçidi boyutlarında WebSocket için yerel destek sağlar. WebSocket desteğini isteğe bağlı olarak etkinleştirmek veya devre dışı bırakmak için kullanıcı tarafından yapılandırılabilen bir ayar yoktur.
RFC6455'de standartlaştırılmış WebSocket protokolü, uzun süre çalışan bir TCP bağlantısı üzerinden sunucu ile istemci arasında tam çift yönlü iletişim sağlar. Bu özellik web sunucusu ile istemci arasında daha etkileşimli bir iletişim sağlar. Bu, HTTP tabanlı uygulamalarda gerektiği gibi yoklama gerektirmeden çift yönlü olabilir. WebSocket,HTTP'den farklı olarak düşük ek yüke sahiptir ve aynı TCP bağlantısını birden çok istek/yanıt için yeniden kullanabilir ve kaynakların daha verimli kullanılmasına neden olabilir. WebSocket protokolleri, 80 ve 443'ün geleneksel HTTP bağlantı noktaları üzerinde çalışacak şekilde tasarlanmıştır. Application Gateway, örnek başına en fazla 30.000 eşzamanlı WS bağlantısını ve 13.500 WSS bağlantısını destekler.
WebSocket trafiğini almak için 80 veya 443 numaralı bağlantı noktasında standart bir HTTP dinleyicisi kullanmaya devam edebilirsiniz. WebSocket trafiği daha sonra uygulama ağ geçidi kurallarında belirtildiği gibi uygun arka uç havuzu kullanılarak WebSocket etkin arka uç sunucusuna yönlendirilir. Arka uç sunucusunun, sistem durumu yoklamasına genel bakış bölümünde açıklanan uygulama ağ geçidi yoklamalarına yanıt vermesi gerekir. Uygulama ağ geçidi sağlık yoklamaları yalnızca HTTP ve HTTPS'yi destekler. WebSocket trafiğini sunucuya yönlendirmek için her arka uç sunucusunun uygulama ağ geçidi için HTTP yoklamalarına yanıt vermesi gerekir.
Sohbet, pano ve oyun uygulamaları gibi hızlı, gerçek zamanlı iletişimden yararlanan uygulamalarda kullanılır.
WebSocket nasıl çalışır?
WebSocket bağlantısı kurmak için istemci ile sunucu arasında belirli bir HTTP tabanlı el sıkışması değiştirilir. Başarılı olursa, uygulama katmanı protokolü daha önce oluşturulmuş TCP bağlantısı kullanılarak HTTP'den WebSockets'e "yükseltilir". Bu durum oluştuğunda HTTP tamamen resmin dışındadır; veriler, WebSocket bağlantısı kapatılana kadar her iki uç nokta tarafından WebSocket protokolü kullanılarak gönderilebilir veya alınabilir.
Note
Bir bağlantı WebSocket'e yükseltildikten sonra, ara sunucu/sonlandırıcı ara sunucu olarak Application Gateway herhangi bir inceleme veya işleme özelliği olmadan ön uçtan alınan verileri arka uca veya tam tersi olarak gönderir. Bu nedenle, Web Uygulaması Güvenlik Duvarı (WAF) herhangi bir içeriği ayrıştıramaz ve bu tür veriler üzerinde herhangi bir denetim gerçekleştirmez. Benzer şekilde, WebSocket bağlantısı kurulduktan sonra Başlık Yeniden Yazma, URL Yeniden Yazma veya arka uç ayarlarındaki ana makine adını geçersiz kılma gibi değişiklikler geçerli olmaz.
Dinleyici yapılandırma öğesi
WebSocket trafiğini desteklemek için mevcut bir HTTP dinleyicisi kullanılabilir. Aşağıdaki kod parçacığı, örnek şablon dosyasındaki bir öğeyi gösterir httpListeners . WebSocket'i ve güvenli WebSocket trafiğini desteklemek için hem HTTP hem de HTTPS dinleyicilerine ihtiyacınız vardır. Benzer şekilde portalı veya Azure PowerShell kullanarak WebSocket trafiğini desteklemek üzere 80 ve 443 numaralı bağlantı noktasında dinleyicilerle bir uygulama ağ geçidi oluşturabilirsiniz.
"httpListeners": [
{
"name": "appGatewayHttpsListener",
"properties": {
"FrontendIPConfiguration": {
"Id": "/subscriptions/{subscriptionId/resourceGroups/{resourceGroupName/providers/Microsoft.Network/applicationGateways/{applicationGatewayName/frontendIPConfigurations/DefaultFrontendPublicIP"
},
"FrontendPort": {
"Id": "/subscriptions/{subscriptionId/resourceGroups/{resourceGroupName/providers/Microsoft.Network/applicationGateways/{applicationGatewayName/frontendPorts/appGatewayFrontendPort443'"
},
"Protocol": "Https",
"SslCertificate": {
"Id": "/subscriptions/{subscriptionId/resourceGroups/{resourceGroupName/providers/Microsoft.Network/applicationGateways/{applicationGatewayName/sslCertificates/appGatewaySslCert1'"
},
}
},
{
"name": "appGatewayHttpListener",
"properties": {
"FrontendIPConfiguration": {
"Id": "/subscriptions/{subscriptionId/resourceGroups/{resourceGroupName/providers/Microsoft.Network/applicationGateways/{applicationGatewayName/frontendIPConfigurations/appGatewayFrontendIP'"
},
"FrontendPort": {
"Id": "/subscriptions/{subscriptionId/resourceGroups/{resourceGroupName/providers/Microsoft.Network/applicationGateways/{applicationGatewayName/frontendPorts/appGatewayFrontendPort80'"
},
"Protocol": "Http",
}
}
],
BackendAddressPool, BackendHttpSetting ve Yönlendirme kuralı yapılandırması
WebSocket özellikli sunucularla bir arka uç havuzu tanımlamak için BackendAddressPool kullanın. backendHttpSetting öğesini, 80 ve 443 arka uç bağlantı noktalarıyla tanımlayın. HTTP Ayarları'ndaki istek zaman aşımı değeri, WebSocket oturumu için de geçerlidir. Uygun dinleyiciyi ilgili arka uç adres havuzuna bağlayan yönlendirme kuralını değiştirmeniz gerekmez.
"requestRoutingRules": [{
"name": "<ruleName1>",
"properties": {
"RuleType": "Basic",
"httpListener": {
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/httpListeners/appGatewayHttpsListener')]"
},
"backendAddressPool": {
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendAddressPools/ContosoServerPool')]"
},
"backendHttpSettings": {
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendHttpSettingsCollection/appGatewayBackendHttpSettings')]"
}
}
}, {
"name": "<ruleName2>",
"properties": {
"RuleType": "Basic",
"httpListener": {
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/httpListeners/appGatewayHttpListener')]"
},
"backendAddressPool": {
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendAddressPools/ContosoServerPool')]"
},
"backendHttpSettings": {
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendHttpSettingsCollection/appGatewayBackendHttpSettings')]"
}
}
}]
Note
İstemciden bir ping gönderilmeden önce zaman aşımı hatalarıyla karşılaşmamak için zaman aşımı değerinizin sunucu tanımlı ping/pong aralığınızdan büyük olduğundan emin olun. WebSocket için tipik bir değer 20 saniyedir, dolayısıyla örneğin 40 saniyelik zaman aşımı değeri, istemci ping göndermeden önce ağ geçidinin zaman aşımı hatası göndermemesini sağlar. Aksi takdirde, bu koşul istemci tarafında bir 1006 hatası oluşturur.
WebSocket destekli arka uç sistemi
WebSocket'in çalışması için arka uçta yapılandırılmış bağlantı noktasında (genellikle 80 veya 443) çalışan bir HTTP/HTTPS web sunucusu olmalıdır. WebSocket protokolü ilk el sıkışmasının üst bilgi alanı olarak WebSocket protokolüne yükseltme ile HTTP olmasını gerektirdiğinden bu gereksinim vardır. Aşağıdaki örnekte bir üst bilgi gösterilmektedir:
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin: https://example.com
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Bu gereksinimin bir diğer nedeni de uygulama ağ geçidi arka uç sistem durumu araştırmasının yalnızca HTTP ve HTTPS protokollerini desteklemesidir. Arka uç sunucusu HTTP veya HTTPS yoklamalarına yanıt vermezse, ağ geçidi bu sunucuyu arka uç havuzundan çıkarır.
Sonraki adımlar
WebSocket desteği hakkında bilgi edindikten sonra, WebSocket özellikli bir web uygulamasını kullanmaya başlamak için bir uygulama ağ geçidi oluşturmaya gidin.