Socket.io-client: ما الفرق بين io.Manager و io.Socket؟

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

أنا نوع جديد من العميل socket.io. بعد قراءة المستند عدة مرات ، ما زلت لا أفهم الاختلافات بين io.Manager و io.Socket. في الأساس يمكنني إنشاء مقبس جديد من io (). ولكن كيف يمكنني إنشاء مثيل مدير؟ وفي الوقت نفسه ، ما هي الاختلافات بين حدث المدير وحدث Socket.

شكرا لك.

question

التعليق الأكثر فائدة

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

ال 14 كومينتر

+1

+1

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

كما أحاول حتى الآن ، يمكن تطبيق معظم ممتلكات المدير مباشرة في io piece
على سبيل المثال
socket = io( 'http://192.168.2.2:8088' + Param.chatNamespace + '?parammmm=1', { query: { key: 'Michael' }, path: Param.path, transports: ['websocket'], autoConnect: false, // like this, could be found in manager piece } );
وهذا ما أريده تمامًا.

أنا أيضا

أرغب في معرفة الفرق ، إذا كان هناك اختلاف ، بين:

  • io (عنوان url ، خيارات)
  • io.connect (عنوان url ، خيارات)

وما هو الغرض من:

  • مدير جديد (URL ، خيارات)

لا يمكنني العثور على أي شيء قابل للاستخدام في الوثائق باستثناء وصف تفصيلي للغاية ولكن بارد للمعلمات.

أيضًا ، إذا كان بإمكاني استخدام صفحة html لعميل المتصفح الخاص بي إما socket.io أو socket.io-client

شكرًا لك وآسف ، أرى أنه قد تم وضع الكثير من العمل في هذه المكتبة ، لكن من المحير جدًا الحصول على تعليق منها.

أنا أتفق تماما. لا يمكنني العثور على أي فرق بين حالات المدير والمآخذ.

+1 ،

+1

مينه !! لذلك لا يوجد رد على هذا بعد ؟؟؟ مثل مع !!

مرحبا! لقد أضفت المزيد من التفاصيل حول المدير وفئات Socket هنا وهنا .

يدير المدير مثيل عميل Engine.IO ، وهو المحرك منخفض المستوى الذي ينشئ الاتصال بالخادم (باستخدام وسائل النقل مثل WebSocket أو الاستقصاء الطويل HTTP).
يتعامل المدير مع منطق إعادة الاتصال.
يمكن استخدام مدير واحد بواسطة عدة مآخذ.

المقبس هو الصنف الأساسي للتفاعل مع الخادم. ينتمي المقبس إلى مساحة اسم معينة (افتراضيًا /) ويستخدم مديرًا أساسيًا للتواصل.

بشكل أساسي ، يتم إنشاء نسخة manager بشكل ضمني عند تشغيل io() . يمكن الوصول إليه باستخدام السمة io للمقبس ، وسيتم إعادة استخدامه إذا قمت بإنشاء مقبس آخر (إلا إذا كنت تستخدم الخيار forceNew ):

const socket = io();
const socket2 = io("/test2");
// socket.io === socket2.io
const socket3 = io("/test3", { forceNew: true }); // new manager
// socket.io !== socket3.io

فيما يتعلق بالأحداث ، ترتبط الأحداث التالية بحالة الاتصال وسيتم إصدارها بواسطة كل من المدير والمآخذ المرتبطة به:

  • خطأ في الاتصال
  • ربط مهلة
  • أعد الاتصال
  • إعادة الاتصال
  • إعادة الاتصال
  • فشل إعادة الاتصال
  • بينغ
  • بونغ

سيصدر المقبس هذه الأحداث الإضافية ، المتعلقة بـ Namespace:

  • الاتصال
  • قطع الاتصال
  • خطأ

من فضلك قل لي إذا كان هذا واضحا بما فيه الكفاية. وآسف على التأخير!

darrachequesne شكرًا لك على التوضيح ، هل يمكنك أيضًا شرح io(url, options) و
io.connect(url, options) فضلك؟ يقول المستند أن كلاهما يقوم بإرجاع مثيل مأخذ ، ولكن كيف يمكننا استخدامهما بشكل مختلف؟

أنا أيضا

أرغب في معرفة الفرق ، إذا كان هناك اختلاف ، بين:

  • io (عنوان url ، خيارات)
  • io.connect (عنوان url ، خيارات)

وما هو الغرض من:

  • مدير جديد (URL ، خيارات)

لا يمكنني العثور على أي شيء قابل للاستخدام في الوثائق باستثناء وصف تفصيلي للغاية ولكن بارد للمعلمات.

أيضًا ، إذا كان بإمكاني استخدام صفحة html لعميل المتصفح الخاص بي إما socket.io أو socket.io-client

شكرًا لك وآسف ، أرى أنه قد تم وضع الكثير من العمل في هذه المكتبة ، لكن من المحير جدًا الحصول على تعليق منها.

أعتقد أن كلاً من io(url, options) و io.connect(url, options) متساويان:

// https://github.com/socketio/socket.io-client/blob/2.3.0/lib/index.js#L15
module.exports = exports = lookup;

// https://github.com/socketio/socket.io-client/blob/2.3.0/lib/index.js#L85
exports.connect = lookup;

الآن ، لماذا توجد طريقتان مختلفتان لفعل الشيء نفسه ، هذا سؤال جيد ...: ابتسم:. يبدو أن الأمر كذلك منذ عام 2012: https://github.com/socketio/socket.io-client/commit/d5652feadc1a2085942b5a6a22394f07242e77b2. سأتحقق مما إذا كانت هناك أسباب محددة لذلك ، ولكن بخلاف ذلك يمكن إزالة connect() في الإصدار 3.

فيما يتعلق بمنشئ المدير ، ربما يجب إزالته من واجهة برمجة التطبيقات العامة. في الأساس:

const socket = io("ws://example.com/my-namespace", {
  reconnectionDelayMax: 10000,
  query: {
    auth: "123"
  }
});

// is the same as
const manager = new Manager("ws://example.com", {
  reconnectionDelayMax: 10000
});
const socket = manager.socket("/my-namespace", {
  query: {
    auth: "123"
  }
});

لقد قمت بتحديث الوثائق: https://github.com/socketio/socket.io-website/commit/e779468a8df739a7ff4316719af2931d6ec70539

أتمنى أن يكون هذا أوضح الآن!

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

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