Maison  >  Article  >  interface Web  >  Partage d'une fonction de salle de discussion simple implémentée dans nodejs_node.js

Partage d'une fonction de salle de discussion simple implémentée dans nodejs_node.js

WBOY
WBOYoriginal
2016-05-16 16:28:461440parcourir

Aujourd'hui, je vais implémenter une salle de discussion simple, utilisant nodejs en arrière-plan et socket.io pour communiquer entre le client et le serveur. Il s'agit d'un framework websocket relativement mature.

Travail initial

1. Installez express et utilisez-le pour héberger socket.io et les pages statiques. Commande npm install express --save, --save pour ajouter le package au fichier package.json
. 2. Installez socket.io, commande npm install socket.io --save.

Écrire le code du serveur

Nous hébergeons d'abord le site Web via Express et l'attachons à l'instance socket.io, car socket.io nécessite le protocole http pour la connexion initiale

Copier le code Le code est le suivant :

var express = require('express'),
​ io = require('socket.io');

var app = express();

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

var serveur = app.listen(8888);


var ws = io.listen(serveur);


Ajoutez un événement de connexion au serveur. Lorsque la connexion client est réussie, une annonce sera envoyée à tous les utilisateurs en ligne. Lorsqu'un utilisateur envoie un message, une diffusion sera envoyée pour informer les autres utilisateurs
.
Copier le code Le code est le suivant :

ws.on('connexion', fonction(client){
console.log(' Client.on('rejoindre', function(msg){
             // Vérifiez s'il y a des doublons
           if(checkPseudo(msg)){
                client.emit('nickname', 'Le pseudo est dupliqué !');
         }autre{
Client.pseudo = msg;
                 ws.sockets.emit('announcement', 'System', msg 'J'ai rejoint le salon de discussion !');
>
});
// Écoutez pour envoyer des messages
Client.on('envoyer.message', fonction(msg){
Client.broadcast.emit('send.message',client.nickname, msg);
});
// Avertir les autres utilisateurs lors de la déconnexion
Client.on('déconnecter', function(){
Si(client.pseudo){
Client.broadcast.emit('send.message','System', client.nickname 'Quittez le salon de discussion !');
>
})
})


Le client étant identifié par son pseudo, le serveur a besoin d'une fonction pour détecter les pseudonymes en double

Copier le code Le code est le suivant :
// Vérifiez si le pseudo est répété
var checkNickname = function(nom){
pour(var k dans ws.sockets.sockets){
Si(ws.sockets.sockets.hasOwnProperty(k)){
Si(ws.sockets.sockets[k] && ws.sockets.sockets[k].nickname == nom){
                    return true ;
            }
>
>
Renvoie faux ;
>

Écrire le code client

Étant donné que le serveur utilise un framework websokcet tiers, la page frontale doit référencer le code client socket.io séparément. Le fichier source se trouve dans le module socket.io. Le chemin sous Windows est node_modulessocket. ionode_modulessocket.io-clientdist. Voici Pour les versions de développement et compressées, citez simplement la version de développement par défaut.

Le frontal gère principalement la vérification des pseudonymes d'entrée et le traitement des messages. Le code complet est le suivant :

Copier le code Le code est le suivant :




    socket.io 聊天室例子
   
   
   
   


   

        

            

                

        

        

            
            
            
        

   





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

总结

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

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn