2017-08-30 1 views
1

J'ai essayé de construire (seul) un système de notification en temps réel.service de notification web en temps réel

Les 2 derniers jours j'ai beaucoup cherché et je crois que la meilleure et la plus simple solution est d'utiliser node.js et socket.io pour le développer. Mais je ne suis pas au courant de ni l'un ni l'autre.

Est-ce que node.js et socket.io est une bonne pratique pour y arriver?

CARACTÉRISTIQUES

  • Deux groupes d'utilisateurs qui seront stockés dans DB (simples utilisateurs & administrateurs)
  • Lorsqu'un quelque chose de simple post-utilisateur, le poste sera sended (tous) admins
  • Si admin répond au message, la réponse sera sended uniquement à l'utilisateur spécifique

est-t ici un exemple simple ou un tutoriel pour commencer avec quelque chose? Si quelqu'un peut poster n'importe quel exemple, il sera très utile pour moi ..

+0

s'il vous plaît voir la réponse – turmuka

Répondre

1

Pour une telle tâche, je recommanderais youse MongoDB et Ajax. C'est beaucoup plus simple, tout ce que vous avez à faire est d'ajouter du code ajax du côté client (html) et de gérer les requêtes côté serveur.

Exemple simple:

utilisateur normal envoie le message

html fichier

$.ajax({ 
    method: "POST", 
    url: "http://myUrl.com/myPath", 
    data: { message: "Hello this is a message" }, 
    contentType: "application/json", 
    success: function(data){ 
    //handle success 
    }, 
    error: function(err){ 
    //error handler 
    }  
}) 

côté serveur

app.post('/myUrl', function(req, res){ 

    if(req.body){ 
    //message handlers here 
    } 
    Users.find({type: 'admin'}, function(err, users){ 
    var message = req.body.message; 
    for(var i = 0; i < users.length, i++){ 
     //make sure you have the type as adminPending from the schema in MongoDB 
     message.save(//save this message to the database); //save this message to the database as 'adminPendingType' 
    } 
    }) 
}) 

Venir à admins, pour qu'ils sachent qu'ils ont reçu un message, vous devez faire un appel ajax chaque seconde d, c'est ainsi que facebook/twitter gère la plupart des choses. Donc, en demandant au serveur encore et encore s'ils ont une nouvelle boîte de réception.

Administrateur html

function messageGetter(){ 

    $.ajax({ 
     method: "POST", 
     url: "http://myUrl.com/didIreceiveAmessage", 
     data: { message: "Hello this is a message" }, 
     contentType: "application/json", 
     success: function(data){ 
     //success handler with data object 
     if(data['exists']== "true"){ 
      //add your data.message to the html page, so it will be seen by the user 
     } 
     }, 
     error: function(err){ 
     //error handler 
     }  
    }) 

} 

setInterval(messageGetter, 1000); //check it each second 

côté serveur

app.post('/myUrl', function(req, res){ 

    if(req.body){ 
    //message handlers here 
    } 
    Message.find({type: 'adminPending'}, function(err, messages){ 
    //find the admin info from cookies here 
    if(messages.length == 0){ 
     console.log("No messages pending"); 
     return false; //exit the request 
    }else{ 
     var admin = req.session.admin.id; //admin user 
     //handle stuff with admin 
     messages['exists'] == true; 
     res.send(messages); 
     //change the type of message from adminPending to adminSeen 
     return false; //exit the message 
    } 
    }) 
}) 

C'était juste un exemple simple et rapide sur la façon de le faire avec ajax et MongoDB avec nœud. Bien sûr, le codage sera beaucoup plus long, car vous devez gérer le changement de type de messages et les sauvegarder.

+0

Désolé de répondre en retard.Merci beaucoup pour votre temps et votre poste .. Je vais le prendre en considération. – GeoDim

+0

Merci aussi @GeoDim – turmuka