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

Linux-Datei-/Verzeichnisberechtigungen und Eigentümerverwaltung

1. Übersicht über Dateiberechtigungen und Eigentu...

Linux implementiert den Quellcode des Zahlenratespiels

Ein einfacher Linux-Ratespiel-Quellcode Spielrege...

Detailliertes Tutorial zum Bereitstellen eines Hadoop-Clusters mit Docker

Ich möchte in meinem Unternehmen kürzlich einen H...

Vue implementiert scrollbaren Popup-Fenstereffekt

In diesem Artikel wird der spezifische Code von V...

HTML Gewichtsverlust Optimieren Sie HTML-Tags zum Erstellen von Webseiten

HTML 4 HTML (nicht XHTML), MIME-Typ ist text/html...

Eine kurze Einführung in die MySQL-Speicher-Engine

1. MySql-Architektur Bevor wir die Speicher-Engin...

Detaillierte Erläuterung der Destrukturierungszuweisung von JS ES6-Variablen

Inhaltsverzeichnis 1. Was ist Dekonstruktion? 2. ...

Installieren Sie Kafka unter Linux

Inhaltsverzeichnis 1.1 Java-Umgebung als Vorausse...

Architektur und Komponentenbeschreibung der privaten Docker-Bibliothek Harbor

In diesem Artikel wird die Zusammensetzung der Ha...

Führen Sie die Schritte aus, um den Fehler 403 Forbidden in Nginx zu beheben.

Die Webseite zeigt 403 Forbidden an Nginx (Yum-In...