Quelle est la meilleure façon d'utiliser socket.io avec expressjs application?

0

La question

Je veux écrire un chat en temps réel de l'application avec la prise.io et parce que mon serveur et l'application fichier sont séparés, je n'ai aucune idée de comment dois-je structurer pour utiliser socket.io instance dans d'autres parties de mon application. C'est mon app.js fichier.

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

module.exports = app;

et c'est mon server.js fichier

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

quelle est la meilleure façon de créer une instance de la prise.io et de démarrage de la connexion pour une utilisation dans d'autres parties de l'application?

express node.js socket.io
2021-11-24 06:06:36
1

La meilleure réponse

1

Vous pouvez utiliser le protocole http avec express app, puis connectez les sockets par le biais de cette connexion http et vous pouvez l'écouter et émettent les sujets à l'intérieur de la io.on('connection')

const app = require("./app");
const mongoose = require("mongoose");
const http = require('http').Server(app);
const io = require('socket.io')(http);
mongoose
  .connect(`mongodb://localhost:27017/${process.env.DATABASE}`)
  .then(() => {
    app.listen(process.env.PORT);
    io.on('connection', socket => {
      console.log('socket connected',socket);
    });
  })
  .catch((err) => {
    console.error(`connection failed: ${err}`);
  });

Je préfère cette deuxième façon:

App.js

const express = require("express");
const pug = require("pug");
const app = express();
module.exports = app;

Server.js

const app = require("./app");
const realtime = require("./realtime");
const mongoose = require("mongoose");
const server = require("http").Server(app);

mongoose
  .connect(`mongodb://localhost:27017/${process.env.DATABASE}`)
  .then(() => {
    app.listen(process.env.PORT);
    require("./realtime.js")(server);

  })
  .catch((err) => {
    console.error(`connection failed: ${err}`);
  });

Realtime.js

module.exports = (app) => {
    const io = require("socket.io")(app);
    io.on("connection", (socket) => {
      console.log("Socket connected")
    })
};
2021-11-24 06:33:04

avec cette approche, comment puis-je utiliser io instance dans d'autres fichiers pour la gestion des chats?
Farid Ghaderi

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................