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 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:
|
<<: Verwenden Sie CSS, um ein Datei-Upload-Muster zu zeichnen
>>: Konfigurationshandbuch für den Lastenausgleich auf Ebene 4 von Nginx
Verwenden Sie v-model, um das Paging-Informations...
Heute habe ich einen dynamischen Fensterstil für d...
Isolationsebene für Datenbanktransaktionen Es gib...
In diesem Kapitel beginnen wir mit dem Betrieb vo...
Inhaltsverzeichnis 1. Erstellen Sie die Betriebsu...
Details zur MySQL-Triggersyntax: Ein Trigger ist ...
Bei der Frontend-Entwicklung stehen wir in direkt...
Vorwort Bevor wir beginnen, sollten wir uns kurz ...
veranschaulichen MySql Community Edition unterstü...
In diesem Artikel wird anhand eines Beispiels ein...
Lassen Sie uns zunächst einige wichtige Punkte zu...
Wie in der folgenden Abbildung dargestellt: Wenn ...
Vorwort Kürzlich stieß ich auf eine Anforderung. ...
Beheben Sie das Problem, dass unter Windows 10 ke...
Die Implementierung des Erweiterns und Reduzieren...