Socket.io-client: Was ist der Unterschied zwischen io.Manager und io.Socket?

Erstellt am 22. Juni 2018  ·  14Kommentare  ·  Quelle: socketio/socket.io-client

Ich bin ein bisschen neu im socket.io-client. Nachdem ich das Dokument mehrmals gelesen habe, verstehe ich immer noch nicht, was die Unterschiede zwischen io.Manager und io.Socket sind. Grundsätzlich kann ich aus io () einen neuen Socket generieren. Aber wie kann ich eine Manager-Instanz generieren? Was sind die Unterschiede zwischen dem Manager-Ereignis und dem Socket-Ereignis?

Dankeschön.

question

Hilfreichster Kommentar

Ja, es scheint, als ob die Dokumentation uns sagt, wie wir diese erstellen sollen, aber nicht, was sie einzigartig macht und wann wir die eine oder andere verwenden sollen.

Alle 14 Kommentare

+1

+1

Ja, es scheint, als ob die Dokumentation uns sagt, wie wir diese erstellen sollen, aber nicht, was sie einzigartig macht und wann wir die eine oder andere verwenden sollen.

Wie ich bisher versucht habe, könnte der größte Teil des Manager-Eigentums direkt in einem Stück angewendet werden
z.B
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 } );
Und das will ich perfekt.

ich auch

Ich würde gerne den Unterschied kennen, wenn es einen gibt zwischen:

  • io (URL, Optionen)
  • io.connect (URL, Optionen)

Und wozu dient:

  • neuer Manager (URL, Optionen)

Ich kann anscheinend nichts brauchbares in der Dokumentation finden, abgesehen von einer sehr detaillierten, aber kalten Beschreibung der Parameter.

Wenn ich auf der Client-HTML-Seite meines Browsers entweder socket.io oder socket.io-client verwenden kann

Vielen Dank und Entschuldigung, ich sehe, dass viel Arbeit in diese Bibliothek gesteckt wurde, aber es ist sehr verwirrend, einen Überblick darüber zu bekommen.

Ich stimme vollkommen zu. Ich kann keinen Unterschied zwischen der Manager- und der Socket-Instanz feststellen.

+1,

+1

Menh !! also noch keine antwort dazu ??? wie mit !!

Hallo! Ich habe hier und hier weitere Details zu den Klassen Manager und Socket hinzugefügt.

Der Manager verwaltet die Engine.IO-Clientinstanz, bei der es sich um die Low-Level-Engine handelt, die die Verbindung zum Server herstellt (mithilfe von Transporten wie WebSocket oder HTTP-Long-Polling).
Der Manager übernimmt die Wiederverbindungslogik.
Ein einzelner Manager kann von mehreren Sockets verwendet werden.

Ein Socket ist die grundlegende Klasse für die Interaktion mit dem Server. Ein Socket gehört zu einem bestimmten Namespace (standardmäßig /) und verwendet einen zugrunde liegenden Manager für die Kommunikation.

Grundsätzlich wird die Manager-Instanz implizit erstellt, wenn io() . Sie können mit dem Attribut io des Sockets darauf zugreifen und werden wiederverwendet, wenn Sie einen anderen Socket erstellen (es sei denn, Sie verwenden die Option forceNew ):

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

In Bezug auf die Ereignisse beziehen sich die folgenden Ereignisse auf den Status der Verbindung und werden sowohl vom Manager als auch von den zugehörigen Sockets ausgegeben:

  • connect_error
  • Verbindungs ​​Timeout
  • wieder verbinden
  • Wiederverbindung
  • reconnect_error
  • reconnect_failed
  • Klingeln
  • Pong

Der Socket gibt diese zusätzlichen Ereignisse aus, die sich auf den Namespace beziehen:

  • verbinden
  • trennen
  • Error

Bitte sagen Sie mir, ob das klar genug ist. Und entschuldigung für die Verzögerung!

@darrachequesne Vielen Dank für Ihre Erklärung, auch können Sie ein wenig den Unterschied zwischen io(url, options) und erklären
io.connect(url, options) bitte? Das Dokument sagt, dass beide eine Socket-Instanz zurückgeben, aber wie können wir sie unterschiedlich verwenden?

ich auch

Ich würde gerne den Unterschied kennen, wenn es einen gibt zwischen:

  • io (URL, Optionen)
  • io.connect (URL, Optionen)

Und wozu dient:

  • neuer Manager (URL, Optionen)

Ich kann anscheinend nichts brauchbares in der Dokumentation finden, abgesehen von einer sehr detaillierten, aber kalten Beschreibung der Parameter.

Wenn ich auf der Client-HTML-Seite meines Browsers entweder socket.io oder socket.io-client verwenden kann

Vielen Dank und Entschuldigung, ich sehe, dass viel Arbeit in diese Bibliothek gesteckt wurde, aber es ist sehr verwirrend, einen Überblick darüber zu bekommen.

Ich denke, dass sowohl io(url, options) als auch io.connect(url, options) gleich sind:

// 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;

Warum gibt es zwei verschiedene Möglichkeiten, dasselbe zu tun? Das ist eine gute Frage ...: smile :. Es scheint seit 2012 so zu sein: https://github.com/socketio/socket.io-client/commit/d5652feadc1a2085942b5a6a22394f07242e77b2. Ich werde prüfen, ob es bestimmte Gründe dafür gibt, aber sonst könnten die connect() in Version

In Bezug auf den Manager-Konstruktor sollte er möglicherweise aus der öffentlichen API entfernt werden. Grundsätzlich:

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"
  }
});

Ich habe die Dokumentation aktualisiert: https://github.com/socketio/socket.io-website/commit/e779468a8df739a7ff4316719af2931d6ec70539

Hoffe das ist jetzt klarer!

Der Zugriff auf den Manager ist sehr sinnvoll. Auf diese Weise können Sie die vollständige Kontrolle über die Socket-Instanzen haben, anstatt den globalen Standardmanager zu verwenden, unter dem sich das Paket befindet und der auch von einem anderen Paket gemeinsam genutzt werden kann.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

hyperknot picture hyperknot  ·  6Kommentare

catamphetamine picture catamphetamine  ·  3Kommentare

newpanjing picture newpanjing  ·  3Kommentare

zappfinger picture zappfinger  ·  5Kommentare

vadimka123 picture vadimka123  ·  6Kommentare