2017-11-04 3 views
2

Ich möchte einen Chat eins zu eins implementieren, ich bin verwirrt, wie dies zu implementieren ist. Ich versuche dies zu erreichen, indem ich eine Nachricht an jeden Socket sende, aber wenn ein Client die Verbindung trennt und sich die Socket-ID ändert, kann er die Nachricht nicht mehr an die Socket-ID senden, die in der Datenbank gespeichert ist. Irgendwelche Tipps zur Umsetzung?Wird die Socket-ID neu ausgegeben, sobald ein Client die Verbindung trennt und erneut eine Verbindung herstellt? Server befindet sich auf Socket.io und node.js?

Vielen Dank im Voraus.

Antwort

1

Für jede neue Sitzung wird neue Client-Socket-Instanz erstellt daher die ID ändern kann, so in der Lage sein, Benutzer zu identifizieren, Sie auf einigen User_id eher dann der Socket-ID, zum Beispiel zum Zeitpunkt der neuen Sitzung verlassen sollten Sie könnten einige Login-Logik wie

io.on("connection", function(socket) { 

    // Accept a login event with user's data 
    socket.on("login", function(userid) { 
     // store socket instance against userid in session store like redis. 
    }); 
}); 

implementieren Auf diese Weise speichern Sie eine neue Socket-Instanz auf jeder Verbindung.

Hinweis: Die Verwendung Buchsen Sie nur die Nachricht senden, wenn der Empfänger online, wenn u offline Nachricht Funktionalität wollen u andere Messaging überprüfen Broker wie rabbitmq

Building NodeJs Chat Application with RabbitMQ

+0

Danke, das war sehr hilfreich sein wollen . Für Offline-Funktionalität kann ich die Nachrichten in der Datenbank speichern, oder? Wenn der Benutzer online ist, kann er diese Nachrichten abrufen. –

+0

Ja, Sie müssten die Nachrichtenwarteschlange selbst erstellen und jedes Mal, wenn der Benutzer zurück ist, sicherstellen, dass alle Nachrichten aus der Warteschlange abgerufen werden. Andernfalls würden RabbitMq oder andere Nachrichtenbroker wie amqp die Warteschlange selbst übernehmen. – pulankit

+1

Ich bin neu bei socket.Io, war nur herumspielen, vielleicht kann ich versuchen, das gleiche zu machen. Wie auch immer, danke für deine Hilfe. :) –

Verwandte Themen