Ich versuche, meine Express-und Socket-Verbindung miteinander zu verbinden. Ich denke, ich habe dieses Setup ordentlich, aber nicht, wenn ich das tun möchte:Verwendung von Socket.IO zusammen mit Express und NodeJS exportiert
- Ein Benutzer erstellt einen neuen Raum. POST an den Back-End-Express-Server.
- Die
app.post()
sendet dann die Eingabe in eine Exporte, die alle Datenbankverbindung behandelt. - Wenn es in der Datenbank gespeichert ist, wird über Sockets an alle Personen gesendet, dass ein neuer Raum hinzugefügt wurde.
Könnte dies ausschließlich mit Steckdosen geschehen? Ja. Aber ich bin nicht wegen dieses Lebens.
RoomRouter.js
exports.createRoom = (req, response) => {
new Room(req.body).save((err, room) => {
response.status(200).send(room);
});
};
app.js
/*
* Express setup is left out, because we don't need to focus on that.
* "app" is const app = express();
*/
const RoomRouter = require("./RoomRouter");
app.post("/room/create", RoomRouter.createRoom);
io.on("connection", (socket) => {
//I want to broadcast the room to everyone
//io.emit("newRoom", room);
});
Der Express Teil funktioniert gut und die POST funktioniert. Nun, wie verbinde ich Socket.IO damit, damit ich jedem mitteilen kann, dass ein neuer Raum hinzugefügt wurde?
Hmm nicht ganz was ich will. 'createRoom' akzeptiert bereits' req, response' als Parameter. – MortenMoulder
Ja, aber mit dieser Methode können Sie auch 'io' als Parameter verwenden und dann' newRoom' direkt auf Ihrer Route ausgeben :) – Sparw
Oh ja, ich sehe das jetzt - Interessant. Anstatt "io" zu jeder Methode zu analysieren, wäre es nicht besser, sie stattdessen zu integrieren? Wie einen Dienst machen, der überall enthalten sein kann, vielleicht? – MortenMoulder