¿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?
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:
npm install socket.io
Agrega el siguiente código a tu archivo
server.js
después deapp.listen(process.env.PORT)
:module.exports
para exportar tantoapp
comoio
.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 tantoapp
comoio
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 requiriendoserver.js
y accediendo a la variableio
: