Socket.io-client: Quelle est la différence entre io.Manager et io.Socket?

Créé le 22 juin 2018  ·  14Commentaires  ·  Source: socketio/socket.io-client

Je suis un peu nouveau sur le client socket.io. Après avoir lu la doc plusieurs fois, je ne comprends toujours pas quelles sont les différences entre io.Manager et io.Socket. En gros, je peux générer une nouvelle socket à partir de io (). mais comment puis-je générer une instance de gestionnaire? En attendant, quelles sont les différences entre l'événement de Manager et l'événement de Socket.

Je vous remercie.

question

Commentaire le plus utile

Oui, il semble que la documentation nous indique comment les créer, mais ne nous dit pas ce qui les rend uniques et quand utiliser l'un ou l'autre.

Tous les 14 commentaires

+1

+1

Oui, il semble que la documentation nous indique comment les créer, mais ne nous dit pas ce qui les rend uniques et quand utiliser l'un ou l'autre.

comme j'essaie jusqu'à présent, la plupart des propriétés du gestionnaire pourraient être directement appliquées dans io piece
par exemple
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 } );
Et c'est ce que je veux parfaitement.

moi aussi

J'aimerais connaître la différence, s'il y en a une, entre:

  • io (URL, options)
  • io.connect (url, options)

Et quel est le but de:

  • nouveau gestionnaire (url, options)

Je n'arrive pas à trouver quoi que ce soit utilisable dans la documentation à part une description très détaillée mais froide des paramètres.

Aussi, si je peux utiliser dans la page html client de mon navigateur soit socket.io ou socket.io-client

Merci et désolé, je vois que beaucoup de travail a été mis sur cette bibliothèque, mais il est très déroutant de comprendre.

Je suis complètement d'accord. Je ne trouve aucune différence entre les instances de gestionnaire et de socket.

+1,

+1

Menh !! donc pas de réponse à ce sujet ??? comme wth !!

Salut! J'ai ajouté plus de détails sur le Manager et les classes Socket ici et ici .

Le gestionnaire gère l'instance du client Engine.IO, qui est le moteur de bas niveau qui établit la connexion au serveur (en utilisant des transports comme WebSocket ou HTTP à interrogation longue).
Le Manager gère la logique de reconnexion.
Un seul Manager peut être utilisé par plusieurs Sockets.

Un Socket est la classe fondamentale pour interagir avec le serveur. Un socket appartient à un certain espace de noms (par défaut /) et utilise un gestionnaire sous-jacent pour communiquer.

Fondamentalement, l'instance de gestionnaire est créée implicitement lors de l'exécution de io() . Il est accessible avec l'attribut io du Socket, et sera réutilisé si vous créez un autre Socket (sauf si vous utilisez l'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

Concernant les événements, les événements suivants sont liés à l'état de la connexion et seront émis à la fois par le Manager et ses Sockets associés:

  • connect_error
  • connect_timeout
  • reconnecter
  • se reconnecter
  • reconnect_error
  • reconnect_failed
  • ping
  • pong

Le socket émettra ces événements supplémentaires, qui sont liés à l'espace de noms:

  • relier
  • déconnecter
  • Erreur

Veuillez me dire si c'est assez clair. Et désolé pour le retard!

@darrachequesne Merci pour votre explication, pouvez-vous également expliquer un peu la différence entre io(url, options) et
io.connect(url, options) s'il vous plaît? Le document dit qu'ils renvoient tous les deux une instance de socket, mais comment pouvons-nous les utiliser différemment?

moi aussi

J'aimerais connaître la différence, s'il y en a une, entre:

  • io (URL, options)
  • io.connect (url, options)

Et quel est le but de:

  • nouveau gestionnaire (url, options)

Je n'arrive pas à trouver quoi que ce soit utilisable dans la documentation à part une description très détaillée mais froide des paramètres.

Aussi, si je peux utiliser dans la page html client de mon navigateur soit socket.io ou socket.io-client

Merci et désolé, je vois que beaucoup de travail a été mis sur cette bibliothèque, mais il est très déroutant de comprendre.

Je pense que io(url, options) et io.connect(url, options) sont égaux:

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

Maintenant, pourquoi y a-t-il deux façons différentes de faire la même chose, c'est une bonne question ...: sourire:. Cela semble être comme ça depuis 2012: https://github.com/socketio/socket.io-client/commit/d5652feadc1a2085942b5a6a22394f07242e77b2. Je vais vérifier s'il y a des raisons spécifiques à cela, mais sinon le connect() pourrait être supprimé dans la v3.

Concernant le constructeur du gestionnaire, il devrait peut-être être supprimé de l'API publique. Fondamentalement:

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

J'ai mis à jour la documentation: https://github.com/socketio/socket.io-website/commit/e779468a8df739a7ff4316719af2931d6ec70539

J'espère que c'est plus clair maintenant!

Avoir accès au gestionnaire a beaucoup de sens, donc de cette façon vous pouvez avoir un contrôle total sur les instances de socket au lieu d'utiliser le gestionnaire global par défaut que le paquet contient en dessous et qui pourrait également être partagé par un autre paquet fe.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

najibghadri picture najibghadri  ·  7Commentaires

exilonX picture exilonX  ·  7Commentaires

BorntraegerMarc picture BorntraegerMarc  ·  4Commentaires

Tiboonn picture Tiboonn  ·  6Commentaires

yesterday24 picture yesterday24  ·  4Commentaires