2017-10-23 2 views
1

Ich 12.59 und Gruppen-Chat in meiner Anwendung in NodeJS Umsetzung mit socket.io und Winkel 4 auf Client-Seite. Ich bin neu bei socket.io und eckig 4. Ich möchte fragen, was ist besser Ansatz für diese, wenn z. B. Benutzer eine Nachricht an bestimmte Benutzer senden oder eine Nachricht an eine Gruppe von Benutzern senden möchten.besserer Ansatz für 00.59 und Gruppen-Chat NodeJS Socket.io

Nach meinem Rnd sollte ich das Obj aller verbundenen Benutzer und obj die Socket-ID des Benutzers mit seinem Benutzernamen (E-Mail oder was auch immer) zu halten, so dass, wenn einige Benutzer eine Nachricht an uns senden möchten sollte seinen Benutzernamen benötigen und wir können über seinen Benutzernamen auf seine ID zugreifen. Oder gibt es eine Lösung außer dieser? Und wo soll ich das Obj von Benutzer und Socket-ID halten globale Variable oder Datenbank?

Antwort

2

Eins-zu-Eins und Gruppen-Chat ist sehr ähnlich. Wenn wir Räume in socket.io https://socket.io/docs/rooms-and-namespaces/# verwenden.

In one-to-one befinden sich nur 2 Benutzer im selben Raum. wo wie in einer Gruppe chat mehr als 2 Personen im selben Raum sein können.

Wenn also eine Person eine Nachricht sendet, sendet sie sie an den Raum, zu dem sie gehören, und möchten mit ihr chatten, anstatt sie an einzelne Benutzer zu senden. Dann wird jeder in diesem Raum, ob es eine andere Person oder mehrere Personen ist, es erhalten.

- Node.js

Nehmen Sie an einem Client zu einem Raum

io.on('connection', function(client){ 
    client.join(conversation._id) 
}); 

eine Nachricht an einen Raum Ausstrahlen

client.broadcast.to(conversation_id).emit('message:send:response', { 
     msg: res.msg, 
     conversation_id: res.data._id 
    }); 

- Angular

hören emittiert Nachrichten

getMessages(conversation_id) { 

    let observable = new Observable(observer => { 

     this.socket.on('message:send:response', (chat) => { 

      if (chat.conversation_id === conversation_id) { 
       observer.next(chat.msg); 
      } 
     }) 

    }); 

    return observable; 

} 
+0

Wie kann ich einen Chat-Raum nennen dynamisch beispiels wenn abc Nachricht an xyz senden möchten dann? Dein Fall (Konversations-ID) \ – Asad

+0

Schau dir die Dokumentation an, mein Freund. https://socket.io/docs/rooms-and-namespaces/#. Unter beitreten und verlassen. '' 'socket.join ('irgendein Raum'); '' 'Also in Ihrem Fall wäre es socket.join ('xyz'); Socket ist Ihr Benutzer, der bei einer Verbindung erstellt wird. – KHAN

+0

Ich habe diese Dokumentation gesehen, konnte aber nicht verstehen, wenn ich Code in nodejs schreibe wie 'io.on (' connection ', function (socket) { socket.join (' irgendein Raum '); }); 'ich denke Jeder Benutzer wird in diesen Raum gehen. Bin richtig ? – Asad

Verwandte Themen