يتم إعطاؤك مقتطف تعليمات برمجية يستورد وحدات مختلفة ويقوم بتهيئة بعض المتغيرات. مهمتك هي إكمال تنفيذ فئة تسمى "WebSocketHandler"، والتي ستتعامل مع اتصالات WebSocket في خادم ويب Tornado.

داخل فئة `WebSocketHandler`، تحتاج إلى تحديد طريقتين: `open(self)` و`on_message(self, message)`. يجب استدعاء الأسلوب "open" عند إنشاء اتصال WebSocket جديد، ويجب استدعاء الأسلوب "on_message" عند تلقي رسالة جديدة من العميل.

يجب أن تتمتع فئة `WebSocketHandler` بالخصائص التالية:

1. يجب أن يرث من tornado.websocket.WebSocketHandler.
2. يجب أن يتتبع جميع العملاء المتصلين من خلال الاحتفاظ بقائمة تسمى "العملاء"، والتي يجب أن تكون في البداية قائمة فارغة.
3. يجب أن تحتوي أيضًا على متغيرين من الفئة يسميان "input_queue" و"output_queue"، وهما مثيلان لـ "multiprocessing.Queue". سيتم استخدام قوائم الانتظار هذه للاتصال بين العمليات بين "WebSocketHandler" وعملية أخرى ستملأ "قائمة انتظار_الإدخال" وتستهلك "قائمة_انتظار_الإخراج".
4. يجب أن تضيف الطريقة "open" اتصال WebSocket الحالي إلى قائمة "العملاء".
5. يجب أن تأخذ طريقة "on_message" الرسالة المستلمة وتحولها إلى تنسيق JSON. بعد ذلك، يجب أن تضع رسالة JSON هذه في "قائمة انتظار_الإدخال" ليتم استهلاكها بواسطة العملية المنفصلة.
6. يجب أيضًا على طريقة `on_message` التحقق مما إذا كانت الرسالة المستلمة تساوي السلسلة `"GET_QUEUE_SIZE"`. إذا كان الأمر كذلك، فيجب أن تستجيب الطريقة برسالة WebSocket تحتوي على حجم قائمة انتظار الإخراج.

مهمتك هي إكمال تنفيذ فئة `WebSocketHandler` من خلال استيفاء المتطلبات المذكورة أعلاه. يمكنك أن تفترض أن مقتطف التعليمات البرمجية المقدم سيكون جزءًا من تطبيق خادم ويب Tornado أكبر.
{"source": "argilla/DistiCoder-dpo-binarized", "kind": "synthetic", "evolved_from": null}