es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es la mejor forma de utilizar socket.io en una aplicación expressjs?

Quiero escribir una aplicación de chat en tiempo real con socket.io y como mi servidor y archivo de aplicación están separados, no tengo mucha idea de cómo debería estructurarlo para usar la instancia de socket.io en otras partes de mi aplicación. Este es mi archivo app.js.

const express = require("express");
const pug = require("pug");
const app = express();

module.exports = app;

Y este es mi archivo server.js.

const app = require("./app");
const mongoose = require("mongoose");
mongoose.connect(`mongodb://localhost:27017/${process.env.DATABASE}`)
  .then(() => {
    app.listen(process.env.PORT);
  })
  .catch((err) => {
    console.error(`connection failed: ${err}`);
  });

¿Cuál es la mejor manera de crear una instancia de socket.io y comenzar su conexión para usar en otras partes de la aplicación?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para crear una instancia de socket.io y empezar su conexión para su uso en otras partes de la aplicación, puedes hacer lo siguiente:

    1. Instala el paquete socket.io ejecutando npm install socket.io
    2. Agrega el siguiente código a tu archivo server.js después de app.listen(process.env.PORT):

      const server = require('http').createServer(app);
      const io = require('socket.io')(server);
      
      io.on('connection', (socket) => {
      console.log('Un usuario se ha conectado');
      });
      
      module.exports = { app, io };
      

    3. Modifica la declaración module.exports para exportar tanto app como io.

    Al hacer los pasos anteriores, estás creando un nuevo servidor HTTP que escucha conexiones en el mismo puerto que tu aplicación Express. Luego, creas una nueva instancia de socket.io y la asignas a una variable llamada io. Finalmente, exportas tanto app como io como un objeto, para que puedas usarlo en otras partes de tu aplicación.

    Luego, puedes usar io en otras partes de tu aplicación requiriendo server.js y accediendo a la variable io:

    const { io } = require('./server');
    
    // Usa io aquí
    io.emit('hello', 'world');
    

Comments are closed.