Socket.io-client: يبدو أن فصل v3 للمقبس يغلق الاتصال الأساسي.

تم إنشاؤها على ١٦ نوفمبر ٢٠٢٠  ·  4تعليقات  ·  مصدر: socketio/socket.io-client

اتريد:

  • [x] أبلغ عن خطأ
  • [] طلب ميزة

السلوك الحالي

بعد أن قمت بالترقية إلى الإصدار 3 ، عندما أتصل بـ socket.disconnect() على أي من جانبي العميل أو الخادم ، يبدو أن الاتصال الأساسي للمدير مغلق أيضًا - كما يتم فصل جميع المقابس الأخرى التي تستخدم نفس المدير / الاتصال الأساسي.

لا أعرف مكان تقديم هذه المشكلة. ربما لديه جذر في engine.io v4؟

إليك اختلاف في مشروعي أثناء الترقية . أعتذر عن احتوائه على بعض التغييرات غير ذات الصلة أيضًا. الشيء الرئيسي الذي أقصد تسليط الضوء عليه هو أنني لم أجري أي تغييرات على كيفية إعداد وإدارة الاتصالات (يمكنك cmd + F من أجل "قطع الاتصال" ، "إغلاق" ، "io.socket").

خطوات إعادة الإنتاج (إذا كان السلوك الحالي خطأ)

من فضلك انظر هذا jsfiddle .

سلوك متوقع

سلوك v2 هو أن استدعاء socket.close() على جانب العميل وعلى جانب الخادم يجب أن يغلق هذا المقبس فقط عندما يكون لدى المدير مساحات أسماء متعددة - يجب ألا يغلق كل مقبس متعدد الإرسال تحت مدير هذا المقبس.

اقامة

  • نظام التشغيل: Windows 10
  • المتصفح: Chrome 86.0
  • الإصدار socket.io: 3.0.0

لاحظ اختلاف السلوك عند استخدام socket.io v2 بدلاً من ذلك.

معلومات أخرى (مثل stacktraces والمشكلات ذات الصلة واقتراحات كيفية الإصلاح)

ال 4 كومينتر

لقد قضيت وقتًا طويلاً في تصحيح أخطاء الكود الخاص بي معتقدًا أنني كسرت شيئًا ما: ")

نتطلع إلى الإصلاح! وشكرًا مرة أخرى على عملك الشاق في بدء الإصدار 3.

لا يتم إطلاق حدث "الاتصال" مطلقًا على اتصال المقبس ولا يملأ المصفوفة connecting في المدير:
https://github.com/socketio/socket.io-client/blame/master/lib/manager.ts#L599

عندما يتم استدعاء _destroy if (this.connecting.length) return; this._close(); سيتم دائمًا إغلاق الاتصال.

لا أرى مشكلة في رمز العميل. في رمز الخادم لم أتمكن من العثور على أي حدث يسمى "الاتصال".

هنا الالتزام الذي يزيل انبعاث "الاتصال".

https://github.com/socketio/socket.io-client/commit/b60e909039d4bbb979d32ec86ac16c5398526b44#diff -f0e64910289a49966c99ceadaa5637404e3439ec0812a4bdb7003fe1e5a33d1c

darrachequesne هل يمكنك التحقق من هذه المشكلة.

@ david-fong يمكنني بالفعل إعادة إنتاج المشكلة ، شكرًا جزيلاً على الخطوات التفصيلية: +1:

يجب إصلاح ذلك من خلال https://github.com/socketio/socket.io-client/commit/f8f60fc860f51aa6465fc32dd9275a8e1d22f05d (مضمن في [email protected] ).

مرة أخرى ، شكرًا على التقرير المفصل ، فهذا يساعد حقًا!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات