كيفية حل WebSocket خادم التناقضات البيانات عوائد

الكاتب: بلاي بوي "بطاقة المكتبة"، بايشان يون مهندس تطوير منظومة العلوم والتكنولوجيا. تطوير API وإدارة اللحوم القديم، وتطوير المنتجات واسعة وعملية وتجربة الصيانة، وعملت في سوهو، سينا وغيرها من شركات الإنترنت المعروفة، وقد شاركت في سينا سحابة منصة برنامج جدار الحماية CC SAE، ومئات الآلاف من المستخدمين على توفير الأمن ويضمن منصة SAE أداء مستقر، 2016 دخول بايشان، أصبحت المهندسين تطوير النظام أكبر منطقة Jiuxianqiao الدمامل.

للتطبيقات في الوقت الحقيقي على شبكة الإنترنت (مثل: الاتصالات في الوقت الحقيقي، والتطبيقات صندوق الأسهم، والرياضة تحديثات حية، متعددة اللاعبين الألعاب ومشاهد أخرى)، الويب التقليدية من أجل الوقت الحقيقي من جانب الخادم الوصول إلى البيانات، وعادة من جانب العميل يرسل دوريا طلب HTTP، يستجيب من جانب الخادم والعوائد البيانات. لأن العميل يرسل دوريا الطلبات إلى خادم، من جانب الخادم عند تحديث أي بيانات، العميل لا يزال إرسال طلبات، مما أدى إلى إهدار عرض النطاق الترددي والإشغال وحدة المعالجة المركزية جانب الخادم.

لحل هذه المشاكل، والمزيد والمزيد من الشركات في التفكير في كيفية حل مشكلة اتصال طويلة، WebSocket هي واحدة من أكثر الأساليب شيوعا. WebSocket تأسيس اتصال TCP من خلال طلب HTTP الأول، والتبادل اللاحقة لم تعد بإرسال طلب HTTP، إنشاء اتصال طويل الحقيقي. في هذه الأثناء اتصال WebSocket أو مزدوجة القناة، ويمكن تنفيذها في اتصال مع الإرسال TCP والحصول على المعلومات.

دمج بايشان يون منصة التجميع أيضا في WebSocket، لا نستطيع ان نقدم بروتوكول WebSocket إلى HTTP وظيفة تحويل بروتوكول للمستخدم، مما يسمح للمستخدمين بالاتصال العميل عن طريق بروتوكول WebSocket طويلا للاتصال منصة سحابة التجميع، سحابة تجميع واحد فقط HTTP اتصال للاتصال الخلفية المشاريع، والحد بشكل كبير الضغط الخلفية، في حين القضاء أيضا على الحاجة للمستخدمين التكيف مع بروتوكول WebSocket مشكلة من جانب الملقم. التقينا في R & D اختبار مسألة مثيرة للاهتمام، وهذا قد يكون هناك الكثير من المطورين واجهت من قبل: استخدم مختلفة WebSocket WebSocket الخادم والعميل الاتصالات، WebSocket خادم التناقضات البيانات العوائد.

الأول، المشهد المشكلة

1. مختلف وصول العميل

(1) الثعبان من قبل عملاء وWebSocket WebSocket WS الخادم: التفاعل //2abe356fc.bsclink.com/، خرج العادي؛

الثعبان المحتوى الناتج العميل

بعد تحميل (2) متصفح كروم الصفحة ws.html، شبيبة الصفحة استدعاء والمستعرض الذي يأتي مع WebSocket العميل وWS WebSocket الخادم: التفاعل //2abe356fc.bsclink.com/، خرج خطأ.

المحتوى الناتج متصفح الكروم

بعد تحميل (3) متصفح سفاري الصفحة ws.html، شبيبة الصفحة استدعاء والمستعرض الذي يأتي مع WebSocket العميل وWebSocket خادم وفاء سلطان: التفاعل //2abe356fc.bsclink.com/، خرج أمر طبيعي.

سفاري المحتوى الناتج المتصفح

2. يطلب متصفح انسيابي

ما يلي هو طلبات المتصفح إلى الخادم عن طريق عملية بروتوكول WebSocket:

يطلب متصفح انسيابي

الثاني، وتحليل المشكلة

الاتصالات غير طبيعي بين كروم وWebsocket خادم يحدث إلا خطأ القاضي تنجم أغلبها عن المشاكل تسبب متصفح كروم، استنادا إلى هذا التحليل لأسباب محددة للمشكلة.

وحدة التحكم 1. المتصفح لعرض معلومات حول الخطأ

كما هو مبين في الشكل الأسفل، فك بروتوكول WebSocket إطار نص فشل عند تحويلها إلى UFT-8 الترميز.

منذ يتم إرجاع البيانات إلى WebSocket الخادم والعميل، وذلك باستخدام وضع إطار النص، لذلك بدأنا عودة خادم التحقيق WebSocket البيانات فك شفرة سبب الفشل.

2. طباعة سجلات WebSocket خادم، عرض محتويات عودة

قبل تسجيل محتوى longloop الملحوظ تسليمها لإخراج WebSocket Server إلى محتوى ثابت وعميل ملقم WebSocket، ومشوه. وبناء على هذا يمكننا تحديد WebSocket Server غير موجود الوضع الشاذ، لذلك نحن بحاجة إلى تحديد ما إذا كانت هناك longloop شذوذ.

3. أثيري عرض حسب الخلفية longloop إرجاع محتويات

ويمكن تحديدها من قبل TCPDUMP القبض longloop إذا كان هناك مشاكل.

العودة إلى longloop البيانات الخلفية

longloop البيانات التي تم إرجاعها إلى خادم WebSocket

بمقارنة أعلاه مجموعتين من البيانات، والاستنتاجات التالية يمكن استخلاصها:

بعد longloop، يتم إرجاع البيانات الحقيقية للم يتغير العميل.

(1) عوائد الخلفية البيانات GZIP مضغوطة.

ينتقل (2) البيانات المضغوطة ردا على خادم WebSocket.

(3) أرسلت أخيرا من قبل WebSocket WebSocket Server إلى العميل.

لماذا عادت 4. الخلفية البيانات المضغوطة؟

أولا، يجب تشغيل محطة الخلفية على ضغط غزيب، وتقديم الدعم لهذا النوع من البيانات عاد ضغط غزيب، للعودة استجابة لضغط البيانات؛

ثانيا، يجب على العميل الحصول على بيان واضح في استجابة لضغط GZIP البيانات، نهاية الخلفية لتكون قادرة على العودة إلى غزيب البيانات المضغوطة.

وأكد أن التكوين على الخادم الحالي يفتح ضغط GZIP، ونوع المحتوى من بيانات النص / HTML لضغط دعم غزيب.

يمكن تحديد المشكلة قد تظهر في ارتباط العميل:

(1) العميل غير مطلوب لإرجاع البيانات المضغوطة، ولكن الخادم الحالي إرجاع البيانات المضغوطة.

الوصول إليها من خلال مختلف المتصفحات، بيانات الإرجاع مختلفة، والمشكلة ليست في نهاية الخلفية يمكن تحديدها.

تقدم (2) العميل لبيانات إرجاع ملقم الواجهة الخلفية لتكون مضغوطة.

فقط يتم إرجاع جوجل كروم غزيب ضغط البيانات، ويمكن الاستدلال على ذلك ربما بسبب الخلفية طلب كروم المحطة، ويمكن أن تشمل استقبال البيانات رأس مضغوط في غزيب رأس طلب، مما أدى بيانات عوائد الخادم الحالي غزيب مضغوط.

5. التقاط المقارن المعلومات طلب رأس كروم وسفاري

معلومات الكروم ذات الصلة:

(1) بناء على طلب رأس متصفح كروم يطلب ملف مع ساكنة ws.html تحمل ترميز:

بعد (2) كروم متصفح ws.html تحميلها في طلب العميل المحلي رأس شبيبة WebSocket ws.html طلب نقل الملف إلى WebSocket Server مع تحمل ترميز:

أرسلت الطلب (3) من Chrome المتصفح بعد longloop، longloop رأس الطلب مع الخلفية تحمل ترميز:

سفاري معلومات ذات صلة

(1) بناء على طلب رأس متصفح سفاري يطلب ملف مع ساكنة ws.html تحمل ترميز:

بعد تحميل (2) متصفح سفاري في ws.html المحلية، شبيبة WebSocket العميل ملف ws.html طلب إحالته إلى طلب WebSocket خادم تحمل ترميز رأس عدم وجود:

بعد إرسال الطلب (3) متصفح سفاري لlongloop، longloop الخلفية للرأس طلب لا تحمل تحمل ترميز:

كروم وسفاري بمقارنة طلبات البيانات ذات الصلة، يمكننا تحديد أسباب التباين WebSocket Server بإرجاع البيانات التالية:

الكروم، متصفح سفاري عندما يتم إرسال الطلب، من أجل تحسين كفاءة شبكة النقل، والحد من استهلاك النطاق الترددي للشبكة، افتراضيا يأتي مع ضغط دعم غزيب، أي شذوذ عند تحميل كل من المتصفحات ws.html. ولكن عندما تدعو شبيبة يرسل العميل كروم متصفح WebSocket طلبا إلى نهاية خادم WebSocket، ويضيف دعم غزيب في رأس طلب قبول ترميز، الخلفية بعد تلقي طلب HTTP أن العميل قادرا على غزيب البيانات استجابة مضغوط التخلص من التوتر، وردت بذلك الخلفية مع غزيب ضغط البيانات استجابة، وWebSocket بعد تلقي البيانات غزيب مضغوط، فإن البيانات لا تدعم الضغط غزيب، مما يؤدي في النهاية إلى خطأ فك شفرة.

شبيبة الدعوة في حين يرسل متصفح سفاري WebSocket WebSocket العميل بطلب إلى جانب الخادم، عدم وجود طلب رأس تحمل ترميز، بعد استلام الطلب الحالي المتشعب، لا يرجع يتم ضغط البيانات استجابة غزيب، بحيث طبيعي تحليل وصول العميل WebSocket وضعها الطبيعي.

الثالث، والحل

لحل هذه المشاكل، ونحن بحاجة للحكم على هذه الطبقة في longloop: إذا كان وكيل المستخدم لمتصفح كروم، تحتاج إلى إزالة قبول ترميز رأس طلب في الرأس، إبلاغ بوضوح الخادم لا تقبل غزيب ضغط البيانات، حتى أن الخادم ونهاية لا عودة غزيب ضغط البيانات، ومتصفح كروم للوصول العادي.

هذه الليلة، وأسعار النفط في 2019، "حتى الأول"!

هيسنس التنفس الإفراج عن ثلاثة هواتف متحركة جديدة: الأمامية والخلفية شاشة كبيرة مزدوجة يمكن قراءة 52 ساعة

سجلات المعاملات الفن اختراق الشارع، كوس "عائلة سيمبسون" باع واحدة عن 116 مليون دولار هونج كونج

المبيعات السنوية بنز السيارات الفاخرة العلامة التجارية بطل اسمه العالم - مرسيدس

التوازن الأمثل والمتوازن للشرسة الإفراج النوبي آلات كاملة حقا الشاشة

Tensorflow و Caffe ، CNTK ، MXNET وغيرها من أطر التعلم العميق 7 مثل MXNET

على مستوى عالمي "ثمانية الخالدون" يهمس تشينغداو العرض الكبير في ابريل من هذا العام، الستار رسميا

الوشق مزدوج 11 إعادة التدوير "المختار": ثواني الأسهم كوي أكثر من 2 مليون شخص إلى الأمام

حافلة الضامن الأمني وانغ: الذين يعيشون في وظائف الأمن هناك "نجم" خدمة!

العالمية "شبكة الأحمر" العودة الى الوطن صباح غد لبدء بناء تشينغداو IKEA

بكين دونغتشنغ 157 كوادر على مستوى المجتمع المحلي، وخدمة الشعب أن تفعل أشياء العملية للأطفال

السيارة لا تسأل، وعشرة ملايين وثمانية أكثر من قليل من الزيت، مساحة كبيرة ومفتوحة جيدة!