سؤال

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

في المقام الأول ، أنا أستخدم WebSockets حتى أتمكن من الحصول على اتصالات منخفضة الرأس بين آلات العميل أو أكثر. (لأغراض المحادثة ، دعنا نقول فقط إنها عميل دردشة) من الواضح أنه يمكنني الاتصال بالخادم من أجهزة متعددة ، ويمكنهم جميعًا دفع الرسائل إلى الخادم ويمكن للخادم الرد ، وهو أمر رائع! ولكن هذا ليس أفضل بكثير من طلبات Ajax القياسية. إذا كان لدي اتصال مستمر ، فأريد أن أكون قادرًا على دفع البيانات إلى العملاء أيضًا. أبسط سيناريو ممكن هو المستخدم 1 ينشر رسالة إلى الخادم وعند استقبالها ، يقوم الخادم بدفعه فورًا إلى المستخدم 2.

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

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

هل كانت مفيدة؟

المحلول

فيما يلي خادم دردشة يستخدم Tornado و Websockets و Redis: https://gist.github.com/pelletier/532067 (محدث: رابط ثابت ، شكرا samidht)

نصائح أخرى

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top