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
In diesem Artikel erfahren Sie, wie Sie mithilfe ...
Im vorherigen Artikel haben wir die Netzwerkerken...
Inhaltsverzeichnis 1. Installieren und erstellen ...
Wenn Sie ein Linux-Meister werden möchten, ist di...
Docker-Version: [root@localhost gae_proxy]# Docke...
Inhaltsverzeichnis 1. Arithmetische Operatoren 2....
Erstellen Sie zunächst die Falldemonstrationstabe...
Vorwort Das Wesen eines Deadlocks ist Ressourcenw...
1. Suchen Sie zunächst die Datendatei auf dem Mig...
Brotli ist ein neues Datenformat, das eine um 20 ...
Inhaltsverzeichnis 1. Reduzieren Sie die Anzahl d...
Inhaltsverzeichnis Hintergrund 1. Dokumentbeschre...
Frage: In index.html führt iframe son.html ein. Wi...
Installieren Sie MySQL 8.0 docker run -p 63306:33...
Inhaltsverzeichnis 1. Einleitung 2. Szenario 3. S...