إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توفر بوابة التطبيق للدعم المحلي لـWebSocket من خلال أحجام البوابة جميعها. لا يوجد إعداد قابل للتكوين من قِبل المستخدم لتمكين دعم WebSocket أو تعطيله بشكل انتقائي.
بروتوكول WebSocket القياسية في RFC6455 يمكن الاتصال المزدوج الكامل بين الخادم والعميل عبر تشغيل اتصال TCP على مدى طويل. تسمح هذه الميزة باتصال أكثر فاعلية بين خادم الويب والعميل والذي يمكن أن يكون ثنائي الاتجاه دون الحاجة إلى التحقق كما هو مطلوب في التطبيقات المستندة إلى HTTP. يحتوي WebSocket على حمولة منخفضة على خلاف HTTP ويمكنه إعادة استخدام نفس اتصال TCP للعديد من الطلبات/الاستجابات مما يؤدي إلى استخدام الموارد بشكل أكثر كفاءة. صُممت بروتوكولات WebSocket للعمل عبر منافذ HTTP التقليدية من 80 و443. تدعم بوابة التطبيقات ما يصل إلى 30,000 اتصال WS متزامن و13,500 اتصال WSS لكل مثيل.
يمكنك متابعة استخدام وحدة الاستماع HTTP القياسية على المنفذ 80 أو 443 لاستقبال نسبة استخدام شبكة WebSocket. يتم توجيه نسبة استخدام شبكة WebSocket بعد ذلك إلى الخادم الخلفي المتاح WebSocket باستخدام مجموعة الخلفية المناسبة كما هو محدد في قواعد بوابة التطبيق. يجب أن يستجيب الخادم الخلفي إلى بوابة تطبيق التحقيقات الموصوفة فينظرة عامة على التحقيق الصحي المقطع. التحقيقات الصحة لبوابة التطبيق هي HTTP / HTTPS فقط. يجب أن يستجيب كل خادم خلفي إلى تحقيقات HTTP لبوابة التطبيق لمسار نسبة استخدام شبكة WebSocket إلى الخادم.
يُستخدم في التطبيقات التي تستفيد من الاتصال السريع في الوقت الحقيقي، مثل الدردشة ولوحة المعلومات وتطبيقات الألعاب.
طريقة عمل WebSocket
لإنشاء اتصال WebSocket يتم تبادل تأكيد الاتصال المحدد المستند إلى HTTP بين حاسوب العميل والخادم. وفي حالة النجاح، يتم "ترقية" بروتوكول طبقة التطبيق من HTTP إلى WebSockets باستخدام اتصال TCP المؤسس مسبقًا. بمجرد حدوث ذلك، يخرج HTTP تمامًا من الصورة; ويمكن إرسال أو استقبال البيانات باستخدام بروتوكول WebSocket من قِبل كل نقطتي النهاية حتى يتم إغلاق اتصال WebSocket.
إشعار
بعد ترقية الاتصال إلى WebSocket، كوكيل وسيط/إنهاء، يرسل Application Gateway ببساطة البيانات المستلمة من الواجهة الأمامية إلى الخلفية والعكس صحيح، دون أي قدرة فحص أو معالجة. لذلك، لا يستطيع Web Application Firewall (WAF) تحليل أي محتوى ولا يقوم بأي فحوصات على هذه البيانات. وبالمثل، أي تعديلات مثل إعادة كتابة الرؤوس، إعادة كتابة الURL، أو تجاوز اسم المضيف في إعدادات الواجهة الخلفية لا تنطبق بعد إنشاء اتصال WebSocket.
عنصر المستخدم لتكوين وحدة الإنصات
يمكن استخدام وحدة الإنصات HTTP الحالية لدعم نسبة استخدام الشبكة WebSocket. المقطع التالي يعرض عنصرا httpListeners من ملف قالب نموذجي. تحتاج إلى مستمعين HTTP وHTTPS معا لدعم WebSocket وتأمين حركة المرور الخاصة ب WebSocket. وبالمثل، يمكنك استخدام البوابة أو Azure PowerShell لإنشاء بوابة تطبيقات مع مستمعين على المنفذين 80 و443 لدعم حركة المرور WebSocket.
"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 وتكوين قاعدة التحويل
استخدم BackendAddressPool لتعريف تجمع الخلفيات مع خوادم مفعلة ل WebSocket. حدد إعداد HttpEndHttp مع منافذ الخلفية 80 و443. طلب قيمة الوقت في مجموعة HTTP ينطبق أيضًا على جلسة WebSocket. لا تحتاج إلى تغيير قاعدة التوجيه، التي تربط المستمع المناسب بمجموعة عناوين الخلفية المقابلة.
"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')]"
}
}
}]
إشعار
تأكد من أن قيمة المهلة أكبر من الفاصل الزمني ping/pong المحدد من قبل الخادم لتجنب مواجهة أخطاء المهلة قبل إرسال اتصال من العميل. القيمة النموذجية لويب سوكيت هي 20 ثانية، فعلى سبيل المثال، قيمة مهلة 40 ثانية تضمن أن البوابة لا ترسل خطأ انتهاء المهلة قبل أن يرسل العميل رسالة تنبيه. وإلا، فإن هذا الشرط يسبب خطأ 1006 على جانب العميل.
الواجهة الخلفية المدعومة ب WebSocket
يجب أن يكون لديك خادم ويب HTTP/HTTPS يعمل على المنفذ المكون (عادة 80 أو 443) لكي يعمل WebSocket. يوجد هذا الشرط لأن بروتوكول WebSocket يتطلب أن تكون المصافحة الأولية HTTP مع ترقية إلى بروتوكول WebSocket كحقل رأس. المثال التالي يوضح رأسا:
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
سبب آخر لهذا المطلب هو أن مسبار الصحة في الواجهة الخلفية لبوابة التطبيق يدعم بروتوكولات HTTP وHTTPS فقط. إذا لم يستجب خادم الواجهة الخلفية لمجسات HTTP أو HTTPS، تقوم البوابة بإزالته من مجموعة الخلفية.
الخطوات التالية
بعد التعرف على دعم WebSocket، قم بإنشاء بوابة تطبيقات للبدء في تطبيق ويب مدعوم ب WebSocket.