js-Code zur Realisierung eines Chatrooms für mehrere Personen

js-Code zur Realisierung eines Chatrooms für mehrere Personen

In diesem Artikelbeispiel wird der spezifische Code des JS-Codes zur Implementierung eines Chatrooms für mehrere Personen zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

Designanforderungen:

1) Benutzer müssen sich im Chatraum anmelden, indem sie sich registrieren
2) Der Chatroom kann alle Online-Benutzer anzeigen
3) Vor jedem Chat-Inhalt wird der Benutzername angezeigt, der den Chat-Inhalt gesendet hat.
4) Privater Chat ist verfügbar.
5) Wenn Benutzer den Chatraum betreten und verlassen, sendet das System im Chatraum

Der config.js- Code lautet wie folgt

module.exports={
    "Port":3000,
    "Host": "127.0.0.1"
}

Der Code von broadcast.js lautet wie folgt

exports.broadcast = Funktion (Daten, Benutzer) {
    var von=Daten.von;
    var Nachricht = Daten.Nachricht;
    Nachricht = von + „sagen Sie: „+Nachricht;
    //Erstelle die Nachricht var send = {
        mstype:"Übertragung",
        Nachricht:Nachricht
    };
    senden = neuer Puffer(JSON.stringify(senden));
    //Alle Benutzer in der Benutzergruppe durchlaufen, alle Benutzer auf der Absenderseite für (var Benutzername in Benutzer) {
        if(Benutzername!=von){
            Benutzer[Benutzername].schreiben(senden);
        }
    }
};

Der Signup.js -Code lautet wie folgt

exports.signup = Funktion (Socket, Daten, Benutzer) {
//Benutzernamen des registrierten Benutzers abrufen var username=data.username;
    if(!users[username]){ //Wenn es nicht existiert, speichere den Benutzernamen und den Socket
        Benutzer[Benutzername]=Socket;
        var send = {
            mstype:"Anmelden",
            Code: 1000,
            Benutzername:Benutzername,
            Meldung: „Registrierung erfolgreich“
        };
        socket.write(JSON.stringify(senden));
    }sonst{//cunzai
        var send = {
            mstype:"Anmelden",
            Code: 1001,
            Meldung: „Der Benutzername ist bereits vergeben. Bitte geben Sie den Benutzernamen erneut ein.“
        }
        socket.write(JSON.stringify(senden));
    }
};

Der p2p.js -Code lautet wie folgt

exports.p2p = Funktion (Socket, Daten, Benutzer) {
    var von=Daten.von;
    var zu=Daten.zu;
    var Nachricht = Daten.Nachricht;
    var Empfänger=Benutzer[an];
    if(!receiver){//Der Empfänger existiert nicht var send={
          mstype:"p2p",
          Code: 2001,
          Nachricht: „Benutzer“+„existiert nicht“
      }
      socket.write(JSON.stringify(senden));
    }anders{
        //Wenn vorhanden, Informationen an den Empfänger senden var send={
            mstype:"p2p",
            Code: 2000,
            von:von,
            Nachricht:von+"an dich"+Nachricht
        }
        Empfänger.schreiben(JSON.stringify(senden));
    }
};

Servercode

//P2P-Chatroom-Server var net=require("net");
var config = erfordern("./config");
var Broadcast = erforderlich("./Broadcast");
var p2p = erfordern("./p2p");
var Anmeldung = erforderlich("./Anmeldung");
var Benutzer={};
var server=net.createServer();
server.on ("Verbindung", Funktion (Socket) {
    socket.on("Daten",Funktion (Daten) {
        Daten = JSON.parse(Daten);
        Schalter (data.mstype) {
            Fall „Anmeldung“:
                Anmeldung.Anmeldung(Socket, Daten, Benutzer);
                brechen;
            Fall „Broadcast“:
                broadcast.broadcast(Daten, Benutzer);
                brechen;
            Fall "p2p":
                p2p.p2p(Socket, Daten, Benutzer);
                brechen;
            Standard:
                brechen;
        }
    });
    socket.on("Fehler",Funktion () {
        console.log("Ein Client wurde abnormal beendet");
    });
});
server.listen(Konfigurations-Port,Konfigurations-Host,Funktion () {
    console.log("Server beginnt mit dem Lauschen am Port"+config.port+"");
});

Der Client-Clientcode lautet wie folgt:

var net = erfordern("net");
var config = erfordern("./config");
var Client = net.createConnection({
    port:Konfigurationsport,
    Host:Konfigurationshost
});
var Benutzername;
Client.on("verbinden",Funktion () {
    console.log("Bitte geben Sie Ihren Benutzernamen ein:");
    process.stdin.on("Daten",Funktion (Daten){
        Daten = Daten.toString().trim();
        // Prüfen, ob der Benutzer bereits existiert if(!username){
            var send = {
                mstype:"Anmelden",
                Benutzername:Daten
            };
            Client.write(JSON.stringify(senden));
            zurückkehren;
        }
        var regex=/(.{1,18}):(.+)/;
        var Übereinstimmungen = regex = regex.exec(Daten);
        wenn(Übereinstimmungen){
            //Wenn es übereinstimmt, ist es p2p
            var from=Benutzername;//Der Absender sind Sie selbst. var to=Matches[1];//An wen wird es gesendet? var Message=Matches[2];
            //JSON-Formatinformationen erstellen var send={
                mstype: "p2p",
                von:Benutzername,
                zu:zu,
                Nachricht:Nachricht
            };
            Client.write(JSON.stringify(senden));
        }anders{
            //Übertragen var send = {
                mstype:"Übertragung",
                von:Benutzername,
                Nachricht:Daten
            };
            Client.write(JSON.stringify(senden));
        }
    });
});
Client.on("Daten",Funktion (Daten) {
    Daten = JSON.parse(Daten);
    Schalter (data.mstype) {
        Fall „Anmeldung“:
            var Code = Daten.Code;
            Schalter (Code) {
                Fall 1000:
                    Benutzername=Daten.Benutzername;
                    konsole.log(daten.nachricht);
                    brechen;
                Fall 1001:
                    konsole.log(daten.nachricht);
                    brechen;
                Standard:
                    brechen;
            }
            brechen;
        Fall „Broadcast“:
            konsole.log(daten.nachricht);
            brechen;
        Fall "p2p":
            var Code = Daten.Code;
            Schalter (Code) {
                Fall 2000:
                    konsole.log(daten.nachricht);
                    brechen;
                Fall 2001:
                    konsole.log(daten.nachricht);
                    brechen;
                Standard:
                    brechen;
            }
            brechen;
        Standard:
            brechen;
    }
});
Client.on("Fehler",Funktion () {
    console.log("Chatraum ist geschlossen!!");
})

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Eine einfache Chatroom-Funktion zum Teilen, implementiert durch nodejs
  • Verwenden Sie Angular, Nodejs und socket.io, um Chatrooms und Mehrpersonen-Chatrooms zu erstellen
  • js zum Schreiben einer einfachen Chatroom-Funktion
  • AngularJS+Node.js zur Implementierung eines Online-Chatrooms
  • Ajax PHP JavaScript MySQL zum Erreichen eines einfachen Online-Chatrooms ohne Aktualisierung
  • JavaScript imitiert Chatroom-Chatprotokolle
  • Implementierung eines einfachen Chatrooms mit Javascript
  • Nodejs realisiert eine einfache Chatroom-Funktion für mehrere Räume
  • NodeJS implementiert eine Chatroom-Funktion
  • Verwenden von Sockets zum Erstellen privater und öffentlicher Chatrooms in Node.js

<<:  Verwenden Sie CSS, um ein Datei-Upload-Muster zu zeichnen

>>:  Konfigurationshandbuch für den Lastenausgleich auf Ebene 4 von Nginx

Artikel empfehlen

CSS verwendet radialen Farbverlauf zur Implementierung von Coupon-Stilen

In diesem Artikel erfahren Sie, wie Sie mithilfe ...

Detaillierte Erläuterung der Anwendungsbeispiele für Vue-Router 4

Inhaltsverzeichnis 1. Installieren und erstellen ...

4 Möglichkeiten, sich schnell Linux-Befehle selbst beizubringen

Wenn Sie ein Linux-Meister werden möchten, ist di...

MySQL-Operator-Zusammenfassung

Inhaltsverzeichnis 1. Arithmetische Operatoren 2....

Beispiel zum Aktivieren des Brotli-Komprimierungsalgorithmus für Nginx

Brotli ist ein neues Datenformat, das eine um 20 ...

Detaillierte Erklärung zur Verwendung von $props, $attrs und $listeners in Vue

Inhaltsverzeichnis Hintergrund 1. Dokumentbeschre...

nuxt.js Konfiguration mehrerer Umgebungsvariablen

Inhaltsverzeichnis 1. Einleitung 2. Szenario 3. S...