Wednesday 6 December 2017

ثانية ، websocket بروتوكول ثنائي - خيارات


مساجويبسوكيتكونترول مساجويبسوكيتكونترول مساجويبسوكتكونترول مساجويبسوكيتكونترول كلاس أدفرتيسيمنت فئة مساجويبسوكيتكونترول يوفر الوصول إلى بيانات التحكم في مأخذ متقدمة على كائن مساجويبسوكيت. يتم إنشاء كائن مساجويبسوكتكونترول تلقائيا مع كائن مساجويبسوكيت الأصل. توفر الخاصية كونترول الوصول إلى كائن مساجويبسوكيت المقترن. الخاصية سوبورتيدبروتوكولز يحصل على قيمة هذه الخاصية ويمكن استدعاؤها في أي وقت. يمكن تغيير خاصية مساجيتيب في أي وقت قبل أو بعد توصيل مساجويبسوكيت. هذا يسمح التطبيق للتبديل بين الرسائل الثنائية و أوتف-8 عند الحاجة. يجب تعيين الخاصية أوتبوندبوفرزيزينبيتس قبل توصيل مساجويبسوكيت. تعيين هذه الخاصية بعد توصيل مساجويبسوكيت ليس له أي تأثير. يجب تعيين أية تغييرات على قيم الخاصية الأخرى على مساجويبسوكيتكونترول قبل داتاغرامزوكيت لا بد أو متصلة. ونتيجة لذلك إذا كنت بحاجة إلى إجراء تغييرات على ماكسمسيزيزيزي. ProxyCredential. OutboundBufferSizeInBytes. أو خصائص سيرفيركدنتيال، ثم يجب أن تحدث هذه التغييرات قبل إجراء مكالمة ناجحة الأسلوب كونيكتاسينك (Windows. Foundation. Uri) على مساجويبسوكيت. المثال التالي بإنشاء مساجويبسوكيت. ثم يوضح كيفية تعيين الخاصية مساجيتيب إلى ثنائي. (قد يتم تعيين خصائص أخرى بطريقة مماثلة). بعد هذا يتم، يمكن للتطبيق توصيل مساجويبسوكيت. ملخص الخصائص يحصل على قائمة أخطاء شهادة الخادم القابلة للاشتعال. الحصول على هذه القائمة وإضافة قيم شينفاليداتيونريسولت لأخطاء شهادة الخادم التي ترغب في تجاهلها أثناء عملية التحقق من صحة شهادة الملقم ويبسوكيت (وس: بروتوكول). الخاصية قيمة قائمة شينفاليداتيون القيم التي تشير الى أخطاء شهادة وحدة الخدمة التي سيتم تجاهلها عند التحقق من صحة شهادات وحدة الخدمة. بشكل افتراضي، تكون القائمة فارغة، وتسبب جميع الأخطاء في التحقق من صحة الفشل. يوضح المثال التالي كيفية تجاهل الخطأ شينفاليداتيونسولت عند الاتصال بملقم يستخدم شهادة موقعة ذاتيا. يضيف الرمز القيمة المناسبة إلى قائمة إغنورابلزرفيرسرتيفيكاتيونرورس قبل استدعاء كونكتاسينك (Windows. Foundation. Uri) على مأخذ ويب. لن تؤدي الشهادة الموقعة ذاتيا server39s إلى فشل التحقق من الصحة، ولكن أخطاء أخرى في التحقق من شهادة الخادم لا يزال يؤدي إلى فشل كونكتاسينك (Windows. Foundation. Uri). الخاصية قيمة مجموعة تحتوي على البروتوكولات الفرعية ويبسوكيت التي يدعمها كائن مساجويبسوكيت. تحتوي الخاصية سوبورتيدبروتوكولز مجموعة من بروتوكولات ويبسوكيت الفرعية التي يدعمها كائن مساجويبسوكيت. قبل استدعاء الأسلوب كونكتاسينك (Windows. Foundation. Uri)، يمكن إضافة سلاسل بروتوكولات فرعية معتمدة إضافية إلى هذه المجموعة التي سيتم إرسالها إلى الملقم في رأس كوتسيك-ويبسوكيت-بروتوكولكوت أثناء مصافحة ويبسوكيت. سيتم عرض البروتوكول الفرعي المدعوم بشكل متبادل الذي تم اختياره بواسطة ملقم ويبسوكيت على خاصية البروتوكول. محاولة لإضافة بروتوكول فرعي إلى هذه المجموعة بعد إجراء مكالمة ناجحة ل كونكتاسينك (Windows. Foundation. Uri) الأسلوب لن يؤدي إلى خطأ ولكن يتم تجاهل القيمة الجديدة. ومع ذلك، إذا استدعاء الأسلوب كونيكتاسينك (Windows. Foundation. Uri) أو اكتمال عملية الاتصال مع وجود خطأ، يمكن للتطبيق تحديث المجموعة المخزنة في الخاصية سوبورتيدبروتوكولز وإعادة محاولة استدعاء الأسلوب كونيكتاسينك (Windows. Foundation. Uri) والجديد سيتم تطبيق القيمة. عائلة جهاز ويندوز 10 (قدم v10.0.10240.0) عقد أبي Windows. Foundation. UniversalApiContract (قدم V1) أتريبوتسبريس الإصدار سيك يحذر المستثمرين حول الخيارات الثنائية والرسوم شركة مقرها قبرص مع بيعها بشكل غير قانوني في الولايات المتحدة فور إمديات ريليس 2013-103 واشنطن ، دس 6 يونيو 2013 مداش لجنة الأوراق المالية والبورصات حذرت المستثمرين اليوم حول المخاطر المحتملة للاستثمار في الخيارات الثنائية واتهمت شركة مقرها قبرص مع بيعها بشكل غير قانوني للمستثمرين في الولايات المتحدة. الخيارات الثنائية هي الأوراق المالية في شكل عقود الخيارات التي تعتمد عوائد على ما إذا كان الأصل الأساسي - على سبيل المثال أسهم الشركة - زيادة أو نقصان في القيمة. في مثل هذا الهيكل كل شيء أو لا شيء دفع تعويضات المستثمرين يراهن على زيادة سعر السهم تواجه نتيجتين محتملتين عند انتهاء العقد: إما أنها تحصل على مبلغ محدد مسبقا من المال إذا زادت قيمة الأصول على مدى فترة محددة، أو لا المال على الإطلاق إذا انخفض. وتزعم لجنة الأوراق المالية والبورصات أن شركة بانك دي بيناري Ltd. تقدم وبيع خيارات ثنائية للمستثمرين في جميع أنحاء الولايات المتحدة دون تسجيل الأوراق المالية أولا كما هو مطلوب بموجب قوانين الأوراق المالية الاتحادية. وقد طلبت الشركة عملاء الولايات المتحدة على نطاق واسع من خلال الإعلان عن طريق أشرطة فيديو يوتيوب والبريد الإلكتروني المزعج، والإعلانات الأخرى على شبكة الإنترنت. وقد اتصل ممثلو بانك دي بيناري مع المستثمرين مباشرة عن طريق الهاتف، والبريد الإلكتروني، ودردشات الرسائل الفورية. كما تعمل بانك دي بيناري كوسيط عند تقديم وبيع هذه الأوراق المالية، لكنها فشلت في التسجيل لدى المجلس الأعلى للأوراق المالية كوسيط كما هو مطلوب بموجب القانون الأمريكي. أصدر المجلس الأعلى للتعليم ولجنة تداول العقود الآجلة للسلع اليوم (كفتك) تنبيها مشتركا للمستثمرين حول مخططات ترويجية مزورة تتضمن خيارات ثنائية ومنصات تداول الخيارات الثنائية. يعمل الكثير من سوق الخيارات الثنائية من خلال منصات التداول القائمة على الإنترنت والتي لا تلتزم بالضرورة بالمتطلبات التنظيمية المعمول بها في الولايات المتحدة وقد تشارك في أنشطة غير قانونية. وقال أندرو ج. سيريسني، المدير المشارك لقسم الإنفاذ التابع للمجلس الأعلى للرقابة المالية إن الشركات الأجنبية فقط التي يمكنها التواصل بسهولة أكبر مع المستثمرين الأمريكيين لا تعني أنها يجب أن تنقذ قوانيننا القديمة التي تحمي المستثمرين من خلال طلب تسجيل الأوراق المالية. اتصل بانك دي بيناري بمستثمرين أمريكيين من خلال الإنترنت و يوتوب، لكنهم تجاهلوا تماما متطلبات تسجيل قوانين الأوراق المالية الأمريكية. ونحن سنكافح بقوة مثل هذا السلوك بغض النظر عن مكان نشأته. وفقا للشكوى سيكس ضد بانك دي بيناري المودعة في المحكمة الاتحادية في ولاية نيفادا، بدأت الشركة تقدم وبيع الخيارات الثنائية للمستثمرين الأميركيين في عام 2010. بانك دي ثنائي المستثمرين المستحثين لإنشاء حسابات مع الشركة، إيداع الأموال في تلك الحسابات، ومن ثم شراء الخيارات الثنائية التي تشمل الأصول الأساسية الأسهم ومؤشرات الأسهم. بانك دي بيناريز كان استدراج المستثمرين الأمريكيين ناجحا جدا وجذب بعض العملاء بوسائل متواضعة جدا. فعلى سبيل المثال، كان للمستثمر الواحد دخل شهري قدره 300، وبقيمة صافية تقل عن 000 25، وشجع عميل آخر على إيداع أموال إضافية في حسابه التجاري "بانك دي بيناري" حتى بعد أن أبلغ ممثل بنك بان دي بيناري بأنه عاطل عن العمل أقل من 1000 في حسابه. وتسعى شكوى المجلس الأعلى للتعليم إلى رفع الدعوى بالإضافة إلى الحكم المسبق على الفائدة، والعقوبات المالية، والأوامر الأولية والدائمة ضد بنك دي بيناري بين غيرها من عمليات الإغاثة. أعلنت كفتك اليوم عن إجراء مواز ضد بنك دي بيناري. أجرى التحقيق سيكس من قبل ليزلي A. هاكالا و C. دابني أوريوردان من المكتب الإقليمي لوس انجليس. وسوف يقود التقاضي سيكس من قبل جون دبليو بيري والسيدة هاكالا. وتقدر لجنة الأوراق المالية والبورصات مساعدة لجنة التجارة الحرة في هذا الشأن. تم إصدار تنبیھ المستثمر عن الخیارات الثنائیة بشکل مشترك من قبل مکتب تثقیف المستثمر والدفاع التابع لھیئة الأوراق المالیة السعودیة ومکتب التواصل مع المستھلك. وتناقش النشرة بالتفصيل المخاطر المحتملة للاستثمار في الخيارات الثنائية، وتحذر المستثمرين من أنها قد لا تملك الضمانات الكاملة لقوانين الأوراق المالية والسلع الاتحادية إذا اشتروا خيارات ثنائية غير مسجلة لا تخضع لإشراف الجهات الرقابية في الولايات المتحدة. وقال لوري شوك، مدير مكتب التعليم والمستثمرين التابع للمجلس الأعلى للتعليم إن المستثمرين يجب أن يكونوا على بينة من احتمالات الغش في هذا المجال، فضلا عن حقيقة أنهم يمكن أن يفقدوا استثماراتهم بأكملها. ونحن نشجع المستثمرين بشدة على التحقق من خلفية السماسرة والمستشارين ومنصات التداول قبل اتخاذ قرار للاستثمار. إذا كان المستثمرون غير قادرين على الحصول على معلومات أساسية بسيطة مثل ما إذا كان المهني المالي مسجل مع المجلس الأعلى للتعليم أو فينرا، ثم ينبغي أن تكون حذرة للغاية. المواد ذات الصلة الفصل 17. ويبسوكيت ويبسوكيت تمكن ثنائية الاتجاه، الموجهة نحو الرسائل تدفق البيانات الثنائية والبيانات بين العميل والخادم. هو أقرب أبي إلى مأخذ شبكة الخام في المتصفح. باستثناء اتصال ويبسوكيت هو أيضا أكثر بكثير من مأخذ الشبكة، كما يستعرض المتصفح كل التعقيد وراء أبي بسيطة ويوفر عددا من الخدمات الإضافية: التفاوض الاتصال ونفس المنشأ إنفاذ السياسات التوافقية مع البنية التحتية هتب القائمة رسالة الاتصالات الموجهة و تأطير الرسالة الفعال سوبروتوكول التفاوض والتوسع ويبسوكيت هي واحدة من أكثر تنوعا ومرنة وسائل النقل المتاحة في المتصفح. أبي بسيطة وبسيطة تمكننا من طبقة وتقديم بروتوكولات التطبيق التعسفي بين العميل و سيرفيرانيثينغ من الحمولات جسون بسيطة لتنسيقات الرسائل الثنائية مخصص بطريقة تدفق، حيث يمكن لأي من الجانبين إرسال البيانات في أي وقت. ومع ذلك، فإن المفاضلة مع بروتوكولات مخصصة هو أنها، حسنا، والعرف. يجب أن يكون التطبيق حساب إدارة الدولة المفقودة، والضغط، والتخزين المؤقت، والخدمات الأخرى المقدمة من قبل المتصفح خلاف ذلك. هناك دائما قيود التصميم والأداء المقايضات، والاستفادة من ويبسوكيت ليست استثناء. باختصار، ويبسوكيت ليست بديلا عن هتب، شر، أو سس، وأفضل أداء من الأهمية بمكان أن نستفيد من نقاط القوة في كل النقل. ويبسوكيت عبارة عن مجموعة من المعايير المتعددة: يتم تعريف واجهة برمجة تطبيقات ويبسوكيت بواسطة W3C، ويتم تعريف بروتوكول ويبسوكيت (رك 6455) وملحقاته بواسطة مجموعة عمل هيبي (إيتف). واجهة برمجة تطبيقات ويبسوكيت واجهة برمجة تطبيقات ويبسوكيت التي يوفرها المتصفح صغيرة وبسيطة بشكل ملحوظ. مرة أخرى، جميع التفاصيل على مستوى منخفض من إدارة الاتصال ومعالجة الرسائل تؤخذ من قبل المتصفح. لبدء اتصال جديد، نحتاج إلى عنوان ورل لمورد ويبسوكيت وعدد قليل من عمليات الرد على الطلب: إرسال محتويات بلوب كحمولة ثنائية تقبل واجهة برمجة تطبيقات ويبسوكيت كائن دومسترينغ الذي يتم ترميزه ك أوتف-8 على السلك أو أحد أرايبوفر ، أرايبوفيرفيو، أو كائنات بلوب لنقل ثنائي. ومع ذلك، لاحظ أن الخيارات الثنائية الأخيرة هي ببساطة الراحة أبي: على السلك، يتم وضع علامة على إطار ويبسوكيت كما ثنائي أو نص عبر بت واحد. وبالتالي، إذا كان التطبيق، أو الملقم، بحاجة إلى غيرها من المعلومات من نوع المحتوى حول الحمولة، ثم يجب أن تستخدم آلية إضافية لتوصيل هذه البيانات. طريقة الإرسال () غير متزامنة: يتم وضع البيانات المقدمة في قائمة الانتظار من قبل العميل، وتعود الدالة على الفور. ونتيجة لذلك، لا سيما عند نقل حمولات كبيرة، لا تخطئ العائد السريع لإشارة إلى أن البيانات قد تم إرسالها لمراقبة كمية البيانات التي تم وضع قائمة الانتظار من قبل المستعرض، يمكن للتطبيق الاستعلام عن سمة بوفيريدامونت على المقبس: إرسال التالي تحديث إذا المخزن مؤقت فارغ يحاول المثال السابق إرسال تحديثات التطبيق إلى الملقم ولكن فقط إذا تم استنزاف الرسائل السابقة من المخزن مؤقت العملاء. لماذا يزعجك مثل هذه الشيكات يتم تسليم كافة رسائل ويبسوكيت بالترتيب المحدد الذي يتم وضعه في قائمة الانتظار من قبل العميل. ونتيجة لذلك، فإن تراكم كبير من الرسائل في قائمة الانتظار، أو حتى رسالة واحدة كبيرة، سيؤخر تسليم الرسائل في قائمة الانتظار وراء حظر من جانب من الخط للتغلب على هذه المشكلة، يمكن للتطبيق تقسيم الرسائل الكبيرة إلى قطع أصغر، مراقبة المخزنة مؤقتا قيمة بعناية لتجنب حجب الرأس من خط، وحتى تنفيذ طابور الأولوية الخاصة للرسائل المعلقة بدلا من الطابور يصطفون جميعا على مأخذ. العديد من التطبيقات تولد فئات متعددة من الرسائل: تحديثات ذات أولوية عالية، مثل حركة المرور، والتحديثات ذات الأولوية المنخفضة، مثل تحويلات الخلفية. لتحسين التسليم، يجب أن يولي التطبيق اهتماما وثيقا لكيفية ومتى يتم وضع كل نوع من الرسائل في قائمة الانتظار على المقبس سوبروتوكول التفاوض ويبسوكيت بروتوكول لا توجد افتراضات حول تنسيق كل رسالة: بت بتتبع ما إذا كانت الرسالة تحتوي على نص أو بيانات ثنائية، بحيث يمكن فك الشفرة بكفاءة من قبل العميل والخادم، ولكن خلاف ذلك محتويات الرسالة غير شفافة. وعلاوة على ذلك، على عكس طلبات هتب أو شر، التي تقوم بتوصيل بيانات تعريف إضافية عبر رؤوس هتب لكل طلب ورد، لا توجد آلية مماثلة لهذه الرسالة ويبسوكيت. ونتيجة لذلك، إذا كانت هناك حاجة إلى بيانات تعريف إضافية حول الرسالة، يجب أن يوافق العميل والخادم على تنفيذ البروتوكول الفرعي الفرعي الخاص به لتوصيل هذه البيانات: يمكن للعميل والخادم الاتفاق على تنسيق رسالة ثابتة upfronte. g. سيتم إجراء جميع الاتصالات عبر رسائل مشفرة بواسطة جسون أو تنسيق ثنائي مخصص، وستكون البيانات الوصفية للرسائل الضرورية جزءا من البنية المشفرة. إذا كان العميل والملقم بحاجة إلى نقل أنواع البيانات المختلفة، ثم يمكنهم الاتفاق على رأس رسالة متسقة، والتي يمكن استخدامها لتوصيل التعليمات لفك شفرة ما تبقى من الحمولة. ويمكن استخدام مزيج من الرسائل النصية والرسائل الثنائية لتوصيل معلومات الحمولة والبيانات الوصفية. يمكن أن ترسل رسالة نصية ما يعادل رؤوس هتب، تليها رسالة ثنائية مع الحمولة النافعة للتطبيق. هذه القائمة ليست سوى عينة صغيرة من الاستراتيجيات الممكنة. تأتي المرونة والنفقات العلوية لرسالة ويبسوكيت على حساب منطق تطبيق إضافي. ومع ذلك، تسلسل الرسائل وإدارة البيانات الوصفية ليست سوى جزء من المشكلة بمجرد أن نحدد تنسيق التسلسل لرسائلنا، كيف يمكننا التأكد من أن كلا من العميل والخادم يفهم كل منهما الآخر، وكيف يمكننا الاحتفاظ بها متزامنا الحمد لله، يوفر ويبسوكيت بسيطة ومريحة سوبروتكول التفاوض أبي لمعالجة المشكلة الثانية. يمكن للعميل الإعلان عن البروتوكولات التي يدعمها إلى الملقم كجزء من مصافحة الاتصال الأولية: صفيف من سوبروتوكولز للإعلان عن أثناء مصافحة ويبسوكيت التحقق من سوبروتوكول الذي تم اختياره من قبل الملقم كما يوضح المثال السابق، منشئ ويبسوكيت يقبل صفيف اختياري من أسماء سوبروتوكول ، والذي يسمح للعميل للإعلان عن قائمة البروتوكولات التي يفهمها أو هو على استعداد لاستخدام لهذا الصدد. يتم إرسال القائمة المحددة إلى الملقم، ويسمح الملقم لاختيار أحد البروتوكولات المعلن عنها من قبل العميل. إذا كان التفاوض سوبروتوكول عن نجاح، ثم يتم تشغيل استدعاء أونوبين على العميل، ويمكن التطبيق الاستعلام سمة البروتوكول على كائن ويبسوكيت لتحديد البروتوكول الذي تم اختياره. من ناحية أخرى، إذا كان الملقم لا يدعم أي من بروتوكولات العميل المعلن عنها من قبل العميل، ثم مصافحة ويبسوكيت غير مكتملة: يتم استدعاء استدعاء إيرور، ويتم إنهاء الاتصال. يتم تعريف أسماء سوبروتوكول بواسطة التطبيق ويتم إرسالها كما هو محدد إلى الملقم أثناء المصافحة هتب الأولية. ثم بعد ذلك، فإن سوبروتوكول لا المحدد له تأثير على واجهة برمجة تطبيقات ويبسوكيت الأساسية. بروتوكول ويبسوكيت بروتوكول ويبسوكيت (رك 6455) الذي وضعته مجموعة عمل هيبي يتكون من عنصرين رفيعي المستوى: مصافحة هتب الافتتاحية المستخدمة للتفاوض على معلمات الاتصال وآلية تأطير الرسائل الثنائية للسماح بالنفقات المنخفضة، على أساس تسليم كل من النص والبيانات الثنائية. يحاول بروتوكول ويبسوكيت معالجة أهداف تقنيات هتب ثنائية الاتجاه الموجودة في سياق البنية الأساسية هتب الموجودة على هذا النحو، وهو مصمم للعمل عبر منافذ هتب 80 و 443 ومع ذلك، لا يحدد التصميم ويبسوكيت إلى هتب، ويمكن للتطبيقات المستقبلية استخدام مصافحة أبسط على منفذ مخصص دون إعادة اختراع البروتوكول بأكمله. - بروتوكول ويبسوكيت رك 6455 بروتوكول ويبسوكيت هو بروتوكول مستقل يعمل بكامل طاقته ويمكن استخدامه خارج المتصفح. بعد أن قلت ذلك، تطبيقه الأساسي هو بمثابة نقل ثنائي الاتجاه للتطبيقات المستندة إلى المستعرض. عميل طبقة تأطير ثنائي وخادم ويبسوكيت التطبيقات التواصل عبر أبي الموجهة نحو رسالة: يوفر المرسل أوفت-8 التعسفي أو الحمولة الثنائية، ويتم إخطار المتلقي من تسليمها عندما تكون الرسالة بأكملها متاحة. ولتمكين هذا، يستخدم ويبسوكيت شكل تأطير ثنائي مخصص (الشكل 17-1)، والذي يقسم كل رسالة تطبيق إلى إطار واحد أو أكثر. ينقلها إلى الوجهة، يعيد تجميعها، وأخيرا يخطر المتلقي بمجرد تلقي الرسالة بأكملها. الشكل 17-1. إطار ويبسوكيت: 214 بايت بايلود الإطار أصغر وحدة اتصالات تحتوي كل منها على رأس إطار متغير الطول وحمولة قد تحمل كل أو جزء من رسالة التطبيق. رسالة تسلسل كامل من الإطارات التي تعبر عن رسالة تطبيق منطقية. يتم اتخاذ قرار بتجزئة رسالة تطبيق إلى إطارات متعددة من خلال التنفيذ الأساسي من رمز تأليف العميل والملقم. وبالتالي، تظل التطبيقات غير مدركة بيسر لأطر ويبسوكيت الفردية أو كيف يتم تنفيذ تأطير. وقد قلت ذلك، لا يزال من المفيد لفهم أبرز كيفية تمثيل كل إطار ويبسوكيت على السلك: البتة الأولى من كل إطار (فين) تشير إلى ما إذا كان الإطار هو جزء نهائي من الرسالة. قد تتكون الرسالة من إطار واحد فقط. ويشير الرمز التشعبي (4 بتات) إلى نوع الرتل المنقول: نص (1) أو ثنائي (2) لنقل بيانات التطبيق أو إطار تحكم مثل إغلاق التوصيل (8) و بينغ (9) و بونغ (10) الشيكات. ويشير بت القناع إلى ما إذا كانت الحمولة مقنعة (بالنسبة للرسائل المرسلة من العميل إلى الخادم فقط). ويمثل طول الحمولة كحقل متغير الطول: إذا كان 0125، يكون طول الحمولة النافعة. إذا كان 126، فإن البايتين التاليين يمثلان عددا صحيحا غير موقعة من 16 بتا يشير إلى طول الإطار. إذا كانت 127 البايتات التالية تمثل رقم صحيح غير مذكور 64 بت يشير إلى طول الإطار. يحتوي مفتاح الإخفاء على قيمة 32 بت المستخدمة لإخفاء الحمولة. تحتوي الحمولة النافعة على بيانات التطبيق وبيانات تمديد مخصصة إذا كان العميل والخادم يتفاوضان على تمديد عند إنشاء الاتصال. يتم حمل القيمة النافعة لجميع الإطارات التي يتم تشغيلها بواسطة العميل باستخدام القيمة المحددة في رأس الإطار: وهذا يمنع البرامج النصية الضارة التي تنفذ على العميل من تنفيذ هجوم تسمم مخبأ على وسطاء قد لا يفهمون بروتوكول ويبسوكيت. للحصول على تفاصيل كاملة عن هذا الهجوم، راجع التحدث إلى نفسك من أجل المتعة والحماية. عرضت في W2SP 2011. ونتيجة لذلك، كل إطار ويبسوكيت المرسل الملقم يتكبد 210 بايت من تأطير النفقات العامة. يجب على العميل أيضا إرسال مفتاح اخفاء، الذي يضيف 4 بايت اضافية إلى رأس، مما أدى إلى 614 بايت فوق النفقات العامة. لا تتوفر بيانات وصفية أخرى، مثل حقول رأس أو معلومات أخرى حول الحمولة النافعة،: يتم تنفيذ جميع اتصالات ويبسوكيت من خلال تبادل الإطارات التي تعامل مع الحمولة النافعة كنقطة معتمة من بيانات التطبيق. ويبسوكيت مولتيبليكسينغ و هيد-أوف-لين بلوكينغ ويبسوكيت عرضة لحجب الرأس من الخط: يمكن تقسيم الرسائل إلى إطار واحد أو أكثر، ولكن الإطارات من رسائل مختلفة لا يمكن أن تكون معطلة، حيث لا يوجد ما يعادل معرف تيار موجود في آلية تأطير HTTP2 انظر تيارات، رسائل، وإطارات). ونتيجة لذلك، فإن رسالة كبيرة، حتى عند تقسيمها إلى إطارات ويبسوكيت متعددة، سيتم حظر تسليم الإطارات المرتبطة مع رسائل أخرى. إذا كان تطبيقك يقدم بيانات حساسة للوقت المتأخر، يجب توخي الحذر بشأن حجم الحمولة النافعة لكل رسالة والنظر في تقسيم الرسائل الكبيرة إلى رسائل تطبيق متعددة إن عدم تعدد الإرسال في مواصفات ويبسوكيت الأساسية يعني أيضا أن كل اتصال ويبسوكيت يتطلب اتصال تكب مخصص، والذي قد تصبح مشكلة محتملة لعمليات النشر HTTP1.x نظرا لعدد محدود من الاتصالات لكل الأصل التي يحتفظ بها المتصفح انظر استنفاد العميل وموارد الخادم. وعلى الجانب المشرق، فإن تمديد تعدد الإرسال الجديد ل ويبسوكيتس الذي وضعته مجموعة عمل هيبي يعالج الحد الأخير: مع هذا التمديد، يمكن أن يوفر اتصال تكب واحد اتصالات ويبسوكيت افتراضية متعددة عن طريق تغليف الأطر الموسومة بمعرف هوية القناة. وتحافظ امتداد الإرسال المتعدد على قنوات منطقية منفصلة ، كل منها يوفر تماما المعادل المنطقي للاتصال ويبسوكيت مستقل، بما في ذلك رؤوس المصافحة منفصلة. - مضاعفة ويبسوكيت (مسودة 10) مع هذا التمديد في المكان، يمكن مضاعفة اتصالات ويبسوكيت متعددة (قنوات) على نفس اتصال تكب. ومع ذلك، لا تزال كل قناة على حدة عرضة لحجب الرأس من خط وبالتالي، أحد الحلول المحتملة هو استخدام قنوات مختلفة، أو اتصالات تكب مخصصة، إلى تعدد رسائل متعددة بالتوازي. أخيرا، لاحظ أن التمديد السابق ضروري فقط اتصالات HTTP1.x. وعلى الرغم من عدم توفر أي مواصفات رسمية لنقل أطر ويبسوكيت باستخدام HTTP2، فإن القيام بذلك سيكون أسهل بكثير: إذ أن HTTP2 يحتوي على تعدد الإرسال المدمج في البث، ويمكن نقل اتصالات ويبسوكيت متعددة خلال جلسة واحدة عن طريق تغليف إطارات ويبسوكيت ضمن آلية تأطير HTTP2. ملحقات البروتوكول تسمح مواصفات ويبسوكيت بإضافات البروتوكول: يمكن توسيع تنسيق السلك ودلالات بروتوكول ويبسوكيت باستخدام حقول أوبكوديس وحقول بيانات جديدة. في حين غير عادية إلى حد ما، وهذا هو ميزة قوية جدا، لأنها تتيح للعميل والخادم لتنفيذ وظائف إضافية على رأس طبقة تأطير ويبسوكيت قاعدة دون الحاجة إلى أي تدخل أو التعاون من رمز التطبيق. ما هي بعض الأمثلة على ملحقات بروتوكول ويبسوكيت مجموعة عمل هيبي، المسؤولة عن تطوير مواصفات ويبسوكيت، تسرد ملحقين رسميين في التطوير: ملحق تعدد الإرسال ل ويبزوكيتس توفر هذه الإضافة وسيلة للاتصال ويبسوكيت منطقي منفصل لمشاركة نقل النقل. ملحقات ضغط ل ويبسوكيت إطار عمل لإنشاء ملحقات ويبسوكيت التي تضيف وظيفة ضغط إلى بروتوكول ويبسوكيت. كما ذكرنا سابقا، يتطلب كل اتصال ويبسوكيت اتصال تكب مخصص، وهو غير فعال. معالجة مضاعفة معالجة هذه المشكلة عن طريق توسيع كل إطار ويبسوكيت مع معرف قناة إضافية للسماح قنوات ويبسوكيت متعددة متعددة لتبادل اتصال تكب واحد. وبالمثل، فإن مواصفات ويبسوكيت الأساسية لا توفر أي آلية أو أحكام لضغط البيانات المنقولة: كل إطار يحمل بيانات الحمولة النافعة كما هو منصوص عليه في الطلب. ونتيجة لذلك، في حين أن هذا قد لا يكون مشكلة لهياكل البيانات الثنائية الأمثل، وهذا يمكن أن يؤدي إلى نقل بايت عالية النفقات العامة إلا إذا تطبيق تطبيق منطقتها ضغط البيانات والمنطق الضغط. في الواقع، تمديد الضغط تمكن ما يعادل التفاوض ترميز نقل التي تقدمها هتب. لتمكين واحد أو أكثر من الإضافات، يجب على العميل الإعلان عنها في المصادقة الأولية الترقية، ويجب على الخادم تحديد والإقرار الملحقات التي سيتم استخدامها لمدى عمر الاتصال المتفاوض عليه. على سبيل المثال العملي، دعونا الآن نلقي نظرة فاحصة على تسلسل الترقية. ويبسوكيت مولتيبليكسينغ أند كومبريسيون إن ذي وايلد اعتبارا من منتصف عام 2013، لا يتم دعم تعدد الإرسال ويبسوكيت حتى الآن من قبل أي متصفح شعبية. وبالمثل، هناك دعم محدود للضغط: جوجل كروم وأحدث مستعرضات ويبكيت قد تعلن ملحق x-ويبكيت-ديفلات-فريم إلى الملقم. ومع ذلك، يستند إطار التصفية إلى مراجعة قديمة للمعيار وسيتم إهمالها في المستقبل. وكما يوحي الاسم، فإن كل رتل يضغط محتويات الحمولة النافعة على أساس كل رتل على حدة، وهو ما دون المستوى الأمثل للرسائل الكبيرة التي يمكن تقسيمها بين عدة أرتال. ونتيجة لذلك، تحولت أحدث التنقيحات لتوسيع الضغط إلى كل رسالة كومبريسيونثاتس الأخبار الجيدة. الأخبار السيئة هي لكل رسالة ضغط لا تزال تجريبية وغير متوفر حتى الآن في أي متصفح شعبية. ونتيجة لذلك، ينبغي أن يولي الطلب اهتماما وثيقا لنوع المحتوى من البيانات المنقولة وأن يطبق ضغطه الخاص حيثما ينطبق ذلك. وهذا هو، على الأقل حتى دعم ويبسوكيت ضغط الأصلي متاح على نطاق واسع في جميع المتصفحات الشعبية. هذا مهم بشكل خاص للتطبيقات النقالة، حيث كل بايت لا لزوم لها يحمل تكاليف عالية للمستخدم. هتب أوبغريد نيغوتياتيون بروتوكول ويبسوكيت يسلم الكثير من الميزات القوية: الاتصالات الموجهة نحو الرسالة، وطبقة تأطير ثنائي الخاصة بها، والتفاوض سوبروتوكول، ملحقات البروتوكول الاختياري، وأكثر من ذلك. ونتيجة لذلك، قبل أن يتم تبادل أية رسائل، يجب على العميل والخادم التفاوض على المعلمات المناسبة لإنشاء الاتصال. الاستفادة من هتب لتنفيذ المصافحة يقدم العديد من المزايا. أولا، يجعل ويبسوكيتس متوافقة مع البنية الأساسية هتب الموجودة: يمكن تشغيل ملقمات ويبسوكيت على المنفذ 80 و 443، والتي غالبا ما تكون المنافذ المفتوحة فقط للعميل. ثانيا، يسمح لنا بإعادة استخدام وتمديد تدفق ترقية هتب مع رؤوس ويبسوكيت المخصصة لإجراء التفاوض: سيك-ويبسوكيت-فيرسيون المرسلة من قبل العميل للإشارة إلى الإصدار (13 ل RFC6455) لبروتوكول ويبسوكيت الذي يريد استخدامه. إذا كان الملقم لا يدعم إصدار العميل، ثم يجب أن الرد مع قائمة الإصدارات المعتمدة. سيك-ويبسوكيت-كي مفتاح تم إنشاؤه تلقائيا يتم إرساله من قبل العميل، والذي يمثل تحديا إلى الخادم لإثبات أن الملقم يدعم الإصدار المطلوب من البروتوكول. سيك-ويبسوكيت قبول استجابة الملقم الذي يحتوي على قيمة موقعة من سيك-ويبسوكيت مفتاح، تثبت أنه يفهم إصدار البروتوكول المطلوب. سيك-ويبسوكيت بروتوكول المستخدمة للتفاوض سوبروتوكول: التطبيق العميل قائمة قائمة بروتوكولات معتمدة يجب الرد مع اسم بروتوكول واحد. سيك-ويبسوكيت-إكستنسيونس المستخدمة للتفاوض على ملحقات ويبسوكيت لاستخدامها لهذا الاتصال: يقوم العميل بالإعلان عن الإضافات المدعومة، ويؤكد الخادم إضافة واحدة أو أكثر عن طريق إعادة نفس الرأس. مع ذلك، لدينا الآن كافة القطع اللازمة لإجراء ترقية هتب والتفاوض على اتصال ويبسوكيت جديد بين العميل والخادم: كافة ملقمات ويبسوكيت المتوافقة مع RFC6455 تستخدم نفس الخوارزمية لحساب الإجابة على تحدي العميل: محتويات يتم تسلسل سيك-ويبسوكيت مفتاح مع سلسلة غويد فريدة من نوعها المعرفة في المعيار، يتم حساب تجزئة SHA1، وتكون السلسلة الناتجة ترميز الأساس -64 وإرسالها مرة أخرى إلى العميل. كحد أدنى، يجب أن تحتوي مصافحة ويبسوكيت الناجحة على إصدار البروتوكول وقيمة التحدي التي تم إنشاؤها تلقائيا التي يتم إرسالها بواسطة العميل، متبوعة برمز استجابة هتب 101 (تبديل البروتوكولات) من الخادم مع تجزئة التحدي-استجابة لتأكيد البروتوكول المحدد الإصدار: يجب على العميل إرسال سيك-ويبسوكيت-فيرسيون و سيك-ويبسوكيت-كي. يجب أن يؤكد الخادم البروتوكول عن طريق إعادة سيك-ويبسوكيت-أسيبت. العميل قد ترسل قائمة من سوبروتوكولز التطبيق عن طريق سيك-ويبسوكيت بروتوكول. يجب أن يقوم الخادم بتحديد أحد بروتوكولات فرعية فرعية المعلن عنها وإعادته عبر سيك-ويبسوكيت-بروتوكول. إذا كان الملقم لا يدعم أي، ثم يتم إحباط الاتصال. يجوز للعميل إرسال قائمة ملحقات البروتوكول في ملحقات سيك-ويبسوكيت. قد يؤكد الخادم واحد أو أكثر من الإضافات المحددة عبر ملحقات سيك-ويبسوكيت. إذا لم يتم توفير ملحقات، ثم يبدأ الاتصال دونها. وأخيرا، بمجرد اكتمال المصافحة السابقة، وإذا نجحت المصافحة، يمكن الآن استخدام الاتصال كقناة اتصال ثنائية الاتجاه لتبادل رسائل ويبسوكيت. من هنا فصاعدا، لا يوجد أي اتصال هتب صريح آخر بين العميل والخادم، وبروتوكول ويبسوكيت يأخذ أكثر. البروكسي والوسطاء و ويبزوكيتس في الممارسة العملية، لأسباب تتعلق بالأمن والسياسة، العديد من المستخدمين لديهم مجموعة مقيدة من المنافذ المفتوحة على وجه التحديد المنفذ 80 (هتب) والمنفذ 443 (هتبس). ونتيجة لذلك، يتم تنفيذ التفاوض ويبسوكيت عبر تدفق ترقية هتب لضمان أفضل التوافق مع سياسات الشبكة والبنية التحتية الموجودة. ومع ذلك، كما لاحظنا سابقا في بروكسيز، وسطاء، تلس، والبروتوكولات الجديدة على شبكة الإنترنت. العديد من الوسطاء هتب القائمة قد لا يفهمون بروتوكول ويبسوكيت الجديد، والتي يمكن أن تؤدي إلى مجموعة متنوعة من حالات الفشل: ترقيات اتصال أعمى، التخزين المؤقت غير مقصودة من إطارات ويبسوكيت، تعديل المحتوى دون فهم البروتوكول، سوء تصنيف حركة المرور ويبسوكيت كما وصلات هتب للخطر، و هكذا. يتعامل مفتاح ويبسوكيت و أسيبت هاندشاك ببعض من هذه المشكلات: إنها سياسة أمان ضد الخوادم والوسطاء الذين قد يقومون بترقية الاتصال دون أن يفهموا بروتوكول ويبسوكيت. ومع ذلك، في حين أن هذا الاحتياط يعالج بعض قضايا النشر مع وكلاء صريح، ومع ذلك غير كافية لوكلاء شفافة، والتي قد تحليل وتعديل البيانات على السلك دون إشعار. الحل البديل إنشاء آمن tunneli. e نهاية إلى نهاية. استخدام وس من خلال التفاوض على جلسة تلس قبل تنفيذ المصافحة هتب أوبغريد، يقوم العميل والخادم بإنشاء نفق مشفر، والذي يحل كافة المخاوف المدرجة سابقا. وينطبق هذا بشكل خاص على عملاء الجوال الذين غالبا ما تمر حركة المرور عبر مجموعة متنوعة من خدمات البروكسي التي قد لا تعمل بشكل جيد مع ويبسوكيت. حالات استخدام ويبسوكيت وأداء ويبسوكيت أبي يوفر واجهة بسيطة لتدفق ثنائي الاتجاه، الموجهة نحو الرسائل من البيانات النصية والبيانات الثنائية بين العميل والخادم: تمرير في ورل ويبسوكيت إلى منشئ، وإعداد بعض وظائف رد جافاسكريبت، ونحن حتى يتم التعامل مع رونينغ بقية من قبل المتصفح. إضافة إلى أن بروتوكول ويبسوكيت، الذي يوفر تأطير ثنائي، والتوسع، والتفاوض سوبروتوكول، و ويبسوكيت يصبح مثاليا لتقديم بروتوكولات التطبيقات المخصصة في المستعرض. ومع ذلك، تماما كما هو الحال مع أي مناقشة حول الأداء، في حين أن تعقيد تنفيذ بروتوكول ويبسوكيت مخفيا من التطبيق، فإنه مع ذلك له آثار أداء هامة لكيفية ومتى يجب استخدام ويبسوكيت. ويبسوكيت ليست بديلا عن شر أو سس، وأفضل أداء من الأهمية بمكان أن نستفيد من نقاط القوة في كل النقل الرجوع إلى حالات استخدام شر والأداء و سس حالات الاستخدام والأداء لاستعراض خصائص الأداء لكل النقل. الطلب والاستجابة الجري ويبسوكيت هو النقل الوحيد الذي يسمح الاتصالات ثنائية الاتجاه عبر نفس اتصال تكب (الشكل 17-2): يمكن للعميل والخادم تبادل الرسائل في الإرادة. ونتيجة لذلك، يوفر ويبسوكيت تسليم الكمون المنخفض من البيانات النصية والتطبيقات الثنائية في كلا الاتجاهين. الشكل 17-2. يتم تحسين تدفق الاتصالات من شر و سس و ويبسوكيت شر للاتصال المعاملات الطلب الاستجابة: العميل بإرسال طلب هتب الكامل، شكلت بشكل جيد إلى الملقم، ويستجيب الملقم مع استجابة كاملة. لا يتوفر أي دعم لتدفق الطلبات، وإلى أن تتوفر واجهة برمجة تطبيقات ستريمز، لا تتوفر واجهة برمجة تطبيقات لتدفق الردود عبر المتصفح يمكن الاعتماد عليها. سس تمكن من كفاءة وتدفق الكمون المنخفض إلى العميل تدفق البيانات المستندة إلى نص: العميل بدء اتصال سس ويستخدم الملقم بروتوكول مصدر الحدث إلى دفق التحديثات إلى العميل. العميل غير قادر على إرسال أية بيانات إلى الملقم بعد المصافحة الأولية. الانتشار والانتظار في انتظار الانتظار لا يؤدي تبديل النقل من شر إلى سس أو ويبسوكيت إلى تقليل ذهاب وإياب بين العميل والخادم بغض النظر عن النقل، فإن زمن انتشار رزم البيانات هو نفسه. ومع ذلك، وبصرف النظر عن كمون الانتشار، هناك أيضا زمن الانتظار. وقت الرسالة يجب أن تنتظر على العميل أو الخادم قبل أن يمكن توجيهها إلى الطرف الآخر. في حالة اقتراع شر، يعد زمن الانتظار في قائمة الانتظار دالة لفاصل اقتراع العميل: قد تكون الرسالة متاحة على الخادم، ولكن لا يمكن إرسالها حتى طلب شر التالي للعميل راجع أداء نموذجي لشرط الاقتراع شر. على النقيض من ذلك، كل من سس و ويبسوكيت استخدام اتصال مستمر، والذي يسمح الملقم بإرسال الرسالة (والعميل، في حالة ويبسوكيت)، لحظة يصبح متاحا. ونتيجة لذلك، يشير التسليم المنخفض الكمون ل سس و ويبسوكيت تحديدا إلى القضاء على الكمون الطابور رسالة. لم نتحقق بعد من كيفية جعل حزم بيانات ويبسوكيت تسافر بشكل أسرع من سرعة الضوء الرسائل العامة بمجرد إنشاء اتصال ويبسوكيت، يتم تبادل بيانات العميل والخادم عبر بروتوكول ويبسوكيت: يتم تقسيم رسائل التطبيق إلى إطار واحد أو أكثر، والتي تضيف من 2 إلى 14 بايت من النفقات العامة. وعلاوة على ذلك، لأن يتم تأطير من خلال شكل ثنائي مخصص، كل من أوتف-8 والبيانات التطبيق ثنائي يمكن ترميز بكفاءة عن طريق نفس الآلية. كيف أن مقارنة مع شر و سس سس يضيف ما لا يقل عن 5 بايت لكل رسالة ولكن يقتصر على أوتف-8 المحتوى انظر فقط بروتوكول تيار الحدث. سوف طلبات HTTP1.x (شر أو خلاف ذلك) تحمل 500800 بايت إضافية من البيانات الوصفية هتب، بالإضافة إلى ملفات تعريف الارتباط انظر قياس والتحكم في بروتوكول النفقات العامة. يقوم HTTP2 بضغط البيانات الوصفية ل هتب، مما يقلل بشكل كبير من الضغط العلوي لرأس الصفحة. في الواقع، إذا كانت الرؤوس لا تتغير بين الطلبات، يمكن أن تكون النفقات العامة منخفضة تصل إلى 8 بايت نضع في اعتبارنا أن هذه الأرقام العلوية لا تشمل النفقات العامة للملكية الفكرية، تكب، وتأطير تلس، التي تضيف 60100 بايت من النفقات العامة مجتمعة لكل رسالة، بغض النظر عن بروتوكول تطبيق انظر تلس سجل الحجم. كفاءة البيانات وضغطها يمكن لكل طلب شر التفاوض على تنسيق ترميز النقل الأمثل (على سبيل المثال غزيب للبيانات المستندة إلى نص)، عبر التفاوض هتب العادية. وبالمثل، لأن سس يقتصر على نقل أوتف-8only، يمكن ضغط البيانات تيار الحدث بكفاءة من خلال تطبيق غزيب عبر الدورة بأكملها. مع ويبسوكيت، والوضع أكثر تعقيدا: ويبسوكيت يمكن نقل كل من النص والبيانات الثنائية، ونتيجة لذلك فإنه ليس من المنطقي لضغط الدورة بأكملها. قد يتم ضغط الأحمال الثنائية بالفعل ونتيجة لذلك، يجب ويبسوكيت تنفيذ آلية ضغط الخاصة به وتطبيقه بشكل انتقائي على كل رسالة. والخبر السار هو أن مجموعة عمل هيبي تقوم بتطوير امتداد ضغط لكل رسالة لبروتوكول ويبسوكيت. ومع ذلك، فإنه غير متوفر حتى الآن في أي من المتصفحات. ونتيجة لذلك، ما لم يطبق التطبيق منطق الضغط الخاص به عن طريق تحسين أحماله الثنائية بعناية (راجع فك البيانات الثنائية مع جافا سكريبت) وتنفيذ منطق الضغط الخاص به للرسائل المستندة إلى النص، فقد يتسبب في تحميل بايت عالي على البيانات المنقولة كروم و تدعم بعض المتصفحات المستندة إلى ويبكيت مراجعة أقدم (ضغط لكل إطار) من امتداد الضغط لبروتوكول ويبسوكيت راجع ويبسوكيت مولتيبليكسينغ أند كومبريسيون إن ذي وايلد. بروتوكولات التطبيقات المخصصة تم تحسين المتصفح لعمليات نقل بيانات هتب: فهو يفهم البروتوكول، ويوفر مجموعة واسعة من الخدمات، مثل المصادقة والتخزين المؤقت والضغط وغير ذلك الكثير. ونتيجة لذلك، يرث طلبات شر كل هذه الوظيفة مجانا. By contrast, streaming allows us to deliver custom protocols between client and server, but at the cost of bypassing many of the services provided by the browser: the initial HTTP handshake may be able to perform some negotiation of the parameters of the connection, but once the session is established, all further data streamed between the client and server is opaque to the browser. As a result, the flexibility of delivering a custom protocol also has its downsides, and the application may have to implement its own logic to fill in the missing gaps: caching, state management, delivery of message metadata, and so on The initial HTTP Upgrade handshake does allow the server to leverage the existing HTTP cookie mechanism to validate the user. If the validation fails, the server can decline the WebSocket upgrade. Leveraging Browser and Intermediary Caches Using regular HTTP has significant advantages. Ask yourself a simple question: would the client benefit from caching the received data Or could an intermediary optimize the delivery of the asset if it could cache it For example, WebSocket supports binary transfers, which allows the application to stream arbitrary image formats with no overheadnice win However, the fact that the image is delivered within a custom protocol means that it wont be cached by the browser cache, or any intermediary (e. g. a CDN). As a result, you may incur unnecessary transfers to the client and much higher traffic to the origin servers. The same logic applies to all other data formats: video, text, and so on. As a result, make sure you choose the right transport for the job A simple but effective strategy to address these concerns could be to use the WebSocket session to deliver non-cacheable data, such as real-time updates and application control messages, which can trigger XHR requests to fetch other assets via the HTTP protocol. Deploying WebSocket Infrastructure HTTP is optimized for short and bursty transfers. As a result, many of the servers, proxies, and other intermediaries are often configured to aggressively timeout idle HTTP connections, which, of course, is exactly what we dont want to see for long-lived WebSocket sessions. To address this, there are three pieces to consider: Routers, load-balancers, and proxies within own network Transparent and explicit proxies in external network (e. g. ISP and carrier proxies) Routers, firewalls, and proxies within the clients network We have no control over the policy of the clients network. In fact, some networks may block WebSocket traffic entirely, which is why you may need a fallback strategy. Similarly, we dont have control over the proxies on the external network. However, this is where TLS may help By tunneling over a secure end-to-end connection, WebSocket traffic can bypass all the intermediate proxies. Using TLS does not prevent the intermediary from timing out an idle TCP connection. However, in practice, it significantly increases the success rate of negotiating the WebSocket session and often also helps to extend the connection timeout intervals. Finally, there is the infrastructure that we deploy and manage ourselves, which also often requires attention and tuning. As easy as it is to blame the client or external networks, all too often the problem is close to home. Each load-balancer, router, proxy, and web server in the serving path must be tuned to allow long-lived connections. For example, Nginx 1.3.13 can proxy WebSocket traffic, but defaults to aggressive 60-second timeouts To increase the limit, we must explicitly define the longer timeouts: 60-minute inactivity timeout for tunnels The gotcha with the preceding example is the extra tunnel timeout. In HAProxy the connect. client. and server timeouts are applied only to the initial HTTP Upgrade handshake, but once the upgrade is complete, the timeout is controlled by the tunnel value. Nginx and HAProxy are just two of hundreds of different servers, proxies, and load balancers running in our data centers. We cant enumerate all the configuration possibilities in these pages. The previous examples are just an illustration that most infrastructure requires custom configuration to handle long-lived sessions. Hence, before implementing application keepalives, double-check your infrastructure first. Long-lived and idle sessions occupy memory and socket resources on all the intermediate servers. Hence, short timeouts are often justified as a security, resource, and operational precaution. Deploying WebSocket, SSE, and HTTP2, each of which relies on long-lived sessions, brings its own class of new operational challenges. Performance Checklist Deploying a high-performance WebSocket service requires careful tuning and consideration, both on the client and on the server. A short list of criteria to put on the agenda: Use secure WebSocket (WSS over TLS) for reliable deployments. Pay close attention to polyfill performance (if necessary). Leverage subprotocol negotiation to determine the application protocol. Optimize binary payloads to minimize transfer size. Consider compressing UTF-8 content to minimize transfer size. Set the right binary type for received binary payloads. Monitor the amount of buffered data on the client. Split large application messages to avoid head-of-line blocking. Leverage other transports where applicable. Last, but definitely not least, optimize for mobile Real-time push can be a costly performance anti-pattern on mobile handsets, where battery life is always at a premium. Thats not to say that WebSocket should not be used on mobile. To the contrary, it can be a highly efficient transport, but make sure to account for its requirements :class WebSocket Description This class implements a WebSocket according to the WebSocket protocol specification in RFC 6455. Both client-side and server-side WebSockets are supported. Server-side WebSockets are usually created from within a HTTPRequestHandler. Client-side WebSockets are created using a HTTPClientSession. Note that special frames like PING must be handled at application level. In the case of a PING, a PONG message must be returned. Inheritance Member Summary Enumerations These error codes can be obtained from a WebSocketException to determine the exact cause of the error. No Connection: Upgrade or Upgrade: websocket header in handshake request. int receiveFrame( void buffer, int length, int amp flags ) Receives a frame from the socket and stores it in buffer. Up to length bytes are received. If the frames payload is larger, a WebSocketException is thrown and the WebSocket connection must be terminated. Returns the number of bytes received. A return value of 0 means that the peer has shut down or closed the connection. Throws a TimeoutException if a receive timeout has been set and nothing is received within that interval. Throws a NetException (or a subclass) in case of other errors. The frame flags and opcode (FrameFlags and FrameOpcodes ) is stored in flags. int sendFrame( const void buffer, int length, int flags FRAMETEXT ) Sends the contents of the given buffer through the socket as a single frame. Values from the FrameFlags. FrameOpcodes and SendFlags enumerations can be specified in flags. Returns the number of bytes sent, which may be less than the number of bytes specified. Certain socket implementations may also return a negative value denoting a certain condition. Sends a Close control frame to the server end of the connection to initiate an orderly shutdown of the connection. void shutdown( Poco::UInt16 statusCode, const std::string amp statusMessage ) Sends a Close control frame to the server end of the connection to initiate an orderly shutdown of the connection. قبول

No comments:

Post a Comment