Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

345
Visualizações
manejar conexiones websocket en múltiples instancias

Necesito entender el concepto de manejar websockets en múltiples instancias para que pueda compartirse entre todas las instancias. Por ejemplo, tengo tres nodos en ejecución que están siendo conectados por el balanceador de carga. Al recibir los datos que deben emitirse en el socket específico. Mi idea inicial era crear un hashmap u objetos json para mantener las conexiones websocket. Pero me doy cuenta de que esto no se puede hacer de esta manera, ya que solo será específico para su instancia particular. Si recibo los datos en cualquiera de las instancias, la mayoría de los datos no se emitirán en esa conexión websocket, ya que no sabe en qué instancia se crea el websocket. ¿Existe una buena manera de manejar las conexiones websocket para que pueda compartirse en todas las instancias? Mi idea era usar la base de datos redis o postgres sql porque se comparten entre todas las instancias.

También probé la solución postgres para almacenar la conexión websocket pero cuando guardo la conexión dice

TypeError: Conversión de estructura circular a JSON

¿Existe alguna buena solución para manejar las conexiones websocket que podrían compartirse entre todas las instancias? Si la base de datos es una buena solución, ¿cómo puedo resolver

TypeError: Conversión de estructura circular a JSON

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Supongo que lo que está buscando son Adapters , y está relativamente bien documentado en la documentación oficial de socket.io ( /v4/adapter/ ).

Al escalar a varios servidores Socket.IO, deberá reemplazar el adaptador en memoria predeterminado por otra implementación, de modo que los eventos se enruten correctamente a todos los clientes.

Tienes varios adaptadores oficiales entre los que puedes elegir:

  • Adaptador redis
  • Adaptador MongoDB
  • adaptador postgres
  • Adaptador de clúster

Aquí hay un ejemplo usando el Adaptador MongoDB :

 npm install @socket.io/mongo-adapter mongodb
 const { Server } = require("socket.io"); const { createAdapter } = require("@socket.io/mongo-adapter"); const { MongoClient } = require("mongodb"); // DATABASE CONNECTION const DB = "mydb"; const COLLECTION = "socket.io-adapter-events"; const mongoClient = new MongoClient("mongodb://localhost:27017/?replicaSet=rs0", { useUnifiedTopology: true, }); const io = new Server(); const main = async () => { await mongoClient.connect(); try { await mongoClient.db(DB).createCollection(COLLECTION, { capped: true, size: 1e6 }); } catch (e) { // collection already exists } const mongoCollection = mongoClient.db(DB).collection(COLLECTION); // HERE COMES THE IMPORTANT PART :) // CREATE MONGO DB ADAPTER AND USE IT io.adapter(createAdapter(mongoCollection)); io.listen(3000); } main();

El adaptador se encargará del resto. Cada paquete que se envía a varios clientes (p. ej io.to("room1").emit() o socket.broadcast.emit() ) será

  • enviado a todos los clientes coincidentes conectados al servidor actual
  • insertado en una colección limitada de MongoDB y recibido por los otros servidores Socket.IO del clúster
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda