سؤال

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

وأيضا، إذا فتح المستخدم أكثر من نافذة واحدة مع Comet-Chat، فإن جميع رسائل الدردشة يجب أن تبقي المزامنة، مما يعني أن المستخدم يمكن أن يكون لديه الكثير من اتصالات الاقتراع الطويلة. لذلك من الصعب الحفاظ على كل رسالة تسليمها في الوقت المحدد.

هل يجب علي بناء قائمة انتظار الرسائل لكل اتصال؟ أو ماذا أفضل طريقة لحل هذا؟

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

المحلول

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

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