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

Detaillierte Erläuterung der Transaktionsisolierungsebenen der MySQL-Datenbank

Isolationsebene für Datenbanktransaktionen Es gib...

Detaillierte Erläuterung der dauerhaften Speicherung von Redis unter Docker

In diesem Kapitel beginnen wir mit dem Betrieb vo...

Detailliertes Beispiel für die Verwendung von MySQL-Triggern

Details zur MySQL-Triggersyntax: Ein Trigger ist ...

Detaillierte Erklärung zur Verwendung des CSS-Zeigerereignisse-Attributs

Bei der Frontend-Entwicklung stehen wir in direkt...

Grundlegendes Tutorial zur Bedienung von Dateien und Berechtigungen in CentOS

Vorwort Bevor wir beginnen, sollten wir uns kurz ...

Natives JS zum Erzielen eines coolen Paging-Effekts

In diesem Artikel wird anhand eines Beispiels ein...

Detaillierte Erläuterung des Docker-Arbeitsmodus und -Prinzips

Wie in der folgenden Abbildung dargestellt: Wenn ...

JavaScript zum Erzielen eines Texterweiterungs- und -reduzierungseffekts

Die Implementierung des Erweiterns und Reduzieren...