Heim  >  Artikel  >  Web-Frontend  >  Teilen einer einfachen Chatroom-Funktion, die in nodejs_node.js implementiert ist

Teilen einer einfachen Chatroom-Funktion, die in nodejs_node.js implementiert ist

WBOY
WBOYOriginal
2016-05-16 16:28:461440Durchsuche

Heute werde ich einen einfachen Chatroom implementieren, der NodeJS im Hintergrund und socket.io für die Kommunikation zwischen dem Client und dem Server verwendet. Dies ist ein relativ ausgereiftes WebSocket-Framework.

Erste Arbeiten

1. Installieren Sie express und verwenden Sie es zum Hosten von socket.io und statischen Seiten. Geben Sie den Befehl npm install express --save, --save ein, um das Paket zur Datei package.json hinzuzufügen 2. Installieren Sie socket.io, Befehl npm install socket.io --save.

Servercode schreiben

Zuerst hosten wir die Website über Express und hängen sie an die socket.io-Instanz an, da socket.io für die Erstverbindung das http-Protokoll benötigt


Code kopieren Der Code lautet wie folgt:
var express = require('express'),
​ io = require('socket.io');
var app = express();

app.use(express.static(__dirname));

var server = app.listen(8888);

var ws = io.listen(server);

Wenn die Clientverbindung erfolgreich ist, wird eine Ankündigung an alle Online-Benutzer gesendet. Wenn ein Benutzer eine Nachricht sendet, wird eine Übertragung gesendet, um andere Benutzer zu benachrichtigen

ws.on('connection', function(client){
console.log(' Client.on('join', function(msg){
             // Überprüfen Sie, ob Duplikate vorhanden sind
If(checkNickname(msg)){
                client.emit('nickname', 'Duplicate Nickname!');
         }sonst{
Client.nickname = msg;
                 ws.sockets.emit('announcement', 'System', msg 'Dem Chatroom beigetreten!');
}
});
// Hören Sie zu, um Nachrichten zu senden
Client.on('send.message', function(msg){
Client.broadcast.emit('send.message',client.nickname, msg);
});
// Andere Benutzer benachrichtigen, wenn die Verbindung getrennt wird
Client.on('disconnect', function(){
If(client.nickname){
Client.broadcast.emit('send.message','System', client.nickname 'Chatraum verlassen!');
}
})

})


Da der Client anhand des Spitznamens identifiziert wird, benötigt der Server eine Funktion zur Erkennung doppelter Spitznamen

Code kopieren Der Code lautet wie folgt: // Überprüfen Sie, ob der Spitzname wiederholt wird
var checkNickname = function(name){
for(var k in ws.sockets.sockets){
If(ws.sockets.sockets.hasOwnProperty(k)){
If(ws.sockets.sockets[k] && ws.sockets.sockets[k].nickname == name){
                    return true;
            }
}
}
Gibt false zurück;
}



Client-Code schreiben

Da der Server ein Websokcet-Framework eines Drittanbieters verwendet, muss die Front-End-Seite separat auf den Socket.io-Clientcode verweisen. Die Quelldatei befindet sich im Socket.io-Modul. Der Pfad unter Windows ist node_modulessocket. ionode_modulessocket.io-clientdist. Geben Sie für Entwicklungs- und komprimierte Versionen einfach standardmäßig die Entwicklungsversion an.

Das Frontend übernimmt hauptsächlich die Überprüfung des Eingabe-Nickname und die Nachrichtenverarbeitung. Der vollständige Code lautet wie folgt:

Code kopieren Der Code lautet wie folgt:




    socket.io 聊天室例子
   
   
   
   


   

        

            

                

        

        

            
            
            
        

   





这里提供完整的代码压缩文件

总结

nodejs是一个好东西,尤其是在处理消息通讯,网络编程方面,天生的异步IO.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn