Socket.io-client: ¿Cuál es la diferencia entre io.Manager e io.Socket?

Creado en 22 jun. 2018  ·  14Comentarios  ·  Fuente: socketio/socket.io-client

Soy algo nuevo en socket.io-client. Después de leer el documento varias veces, todavía no entiendo cuáles son las diferencias entre io.Manager y io.Socket. Básicamente, puedo generar un nuevo socket desde io (). pero ¿cómo puedo generar una instancia de administrador? Mientras tanto, ¿cuáles son las diferencias entre el evento de Manager y el evento de Socket?

gracias.

question

Comentario más útil

Sí, parece que la documentación nos dice cómo crearlos, pero no nos dice qué los hace únicos y cuándo usar uno u otro.

Todos 14 comentarios

+1

+1

Sí, parece que la documentación nos dice cómo crearlos, pero no nos dice qué los hace únicos y cuándo usar uno u otro.

como he intentado hasta ahora, la mayor parte de la propiedad del administrador podría aplicarse directamente en la pieza io
p.ej
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 } );
Y eso es lo que quiero perfectamente.

yo también

Me encantaría saber la diferencia, si hay una, entre:

  • io (url, opciones)
  • io.connect (url, opciones)

Y cuál es el propósito de:

  • nuevo administrador (url, opciones)

Parece que no puedo encontrar nada utilizable en la documentación aparte de una descripción muy detallada pero fría de los parámetros.

Además, si puedo usar en la página html del cliente de mi navegador, ya sea socket.io o socket.io-client

Gracias y lo siento, veo que se ha trabajado mucho en esta biblioteca, pero es muy confuso entenderlo.

Estoy completamente de acuerdo. No puedo encontrar ninguna diferencia entre el administrador y las instancias de socket.

+1,

+1

Menh !! entonces no hay respuesta sobre esto todavía ??? como wth !!

¡Hola! He agregado más detalles sobre las clases Manager y Socket aquí y aquí .

El administrador administra la instancia del cliente Engine.IO, que es el motor de bajo nivel que establece la conexión con el servidor (utilizando transportes como WebSocket o HTTP long polling).
El gerente maneja la lógica de reconexión.
Varios Sockets pueden utilizar un solo administrador.

Un Socket es la clase fundamental para interactuar con el servidor. Un Socket pertenece a un determinado espacio de nombres (por defecto /) y utiliza un administrador subyacente para comunicarse.

Básicamente, la instancia del administrador se crea implícitamente cuando se ejecuta io() . Se puede acceder a él con el atributo io del Socket, y se reutilizará si crea otro Socket (a menos que use la opción forceNew ):

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

En cuanto a los eventos, los siguientes eventos están relacionados con el estado de la conexión y serán emitidos tanto por el Administrador como por sus Sockets asociados:

  • connect_error
  • connect_timeout
  • reconectarse
  • reconectando
  • reconnect_error
  • reconnect_failed
  • silbido
  • apestar

El Socket emitirá estos eventos adicionales, que están relacionados con el espacio de nombres:

  • conectar
  • desconectar
  • error

Dime si eso es lo suficientemente claro. ¡Y perdón por el retraso!

@darrachequesne Gracias por tu explicación, también puedes explicar un poco la diferencia entre io(url, options) y
io.connect(url, options) por favor? El documento dice que ambos devuelven una instancia de socket, pero ¿cómo podemos usarlos de manera diferente?

yo también

Me encantaría saber la diferencia, si hay una, entre:

  • io (url, opciones)
  • io.connect (url, opciones)

Y cuál es el propósito de:

  • nuevo administrador (url, opciones)

Parece que no puedo encontrar nada utilizable en la documentación aparte de una descripción muy detallada pero fría de los parámetros.

Además, si puedo usar en la página html del cliente de mi navegador, ya sea socket.io o socket.io-client

Gracias y lo siento, veo que se ha trabajado mucho en esta biblioteca, pero es muy confuso entenderlo.

Creo que tanto io(url, options) como io.connect(url, options) son iguales:

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

Ahora bien, ¿por qué hay dos formas diferentes de hacer lo mismo? Esa es una buena pregunta ...: sonríe:. Parece ser así desde 2012: https://github.com/socketio/socket.io-client/commit/d5652feadc1a2085942b5a6a22394f07242e77b2. Verificaré si hay razones específicas para eso, pero de lo contrario, el connect() podría eliminarse en v3.

Con respecto al constructor del administrador, tal vez debería eliminarse de la API pública. Básicamente:

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

Actualicé la documentación: https://github.com/socketio/socket.io-website/commit/e779468a8df739a7ff4316719af2931d6ec70539

¡Espero que esté más claro ahora!

Tener acceso al administrador tiene mucho sentido, por lo que de esta manera puede tener un control total de las instancias de socket en lugar de usar el administrador predeterminado global que contiene el paquete debajo, que también podría ser compartido por otro paquete fe.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

ledmago picture ledmago  ·  3Comentarios

BorntraegerMarc picture BorntraegerMarc  ·  4Comentarios

vadimka123 picture vadimka123  ·  6Comentarios

exilonX picture exilonX  ·  7Comentarios

catamphetamine picture catamphetamine  ·  3Comentarios