أنا نوع جديد من العميل socket.io. بعد قراءة المستند عدة مرات ، ما زلت لا أفهم الاختلافات بين io.Manager و io.Socket. في الأساس يمكنني إنشاء مقبس جديد من io (). ولكن كيف يمكنني إنشاء مثيل مدير؟ وفي الوقت نفسه ، ما هي الاختلافات بين حدث المدير وحدث Socket.
شكرا لك.
+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
}
);
وهذا ما أريده تمامًا.
أرغب في معرفة الفرق ، إذا كان هناك اختلاف ، بين:
وما هو الغرض من:
لا يمكنني العثور على أي شيء قابل للاستخدام في الوثائق باستثناء وصف تفصيلي للغاية ولكن بارد للمعلمات.
أيضًا ، إذا كان بإمكاني استخدام صفحة 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.
التعليق الأكثر فائدة
نعم ، يبدو أن الوثائق تخبرنا بكيفية إنشاء هذه ، لكنها لا تخبرنا بما يجعلها فريدة ومتى نستخدم أحدها أو الآخر.