2016-06-02 5 views
0

Ich bin hier, um mein Problem in Socket-Verbindung und Trennung zu lösen. Ich möchte etwas wie dasWie ändert sich der Status des Benutzers, wenn der Socket getrennt wird?

1. connection done. (ok) // working 
2. on perticular event I am doing to update location of user in database { Here user is online }. 
3. But somehow network disconnection the socket will be disconnect and user must be offline. this can be using disconnect event. but I am not aware how to recognise that perticular user has to be updated offline because I don't have user_id in `socket.on('disconnect')` event. please help me out. I googled it everywhere but not helped me out. 

Entschuldigung für die Suche nach Logik, aber es ist wirklich notwendig für mich. Vielen Dank im Voraus. :)

+0

Auf Socket-Verbindung eine neue Eigenschaft auf Socket-Objekt erstellen wie socket_object.user_id = ‚XXXXX‘ und wenn Trennungsereignis wird ausgeführt werden. Sie haben diese user_id auf Ihrem socket_object, verwenden Sie sie wie Sie wollen. Oder Sie können Redis verwenden, um Socket-bezogene Daten mit der Socket-ID als Schlüssel zu speichern, und wenn Socket getrennt wird, können Sie alle Daten von Redis abrufen und die gewünschte Arbeit ausführen und den Rediskey danach entfernen –

Antwort

0

Auf trennen, wie Sie erwähnt haben, können Sie die ID auf basierend verfolgen this.id oder socket.id.

socket.on('disconnect', function() { 
    console.log(this.id); 
    console.log(socket.id); 
}); 

Alternativ können Sie Steckdosen Griff durch ein globales Array, wie in this answer vorgeschlagen.

Wenn netiher die geeignet ist, können Sie einige Dependency Injection auf dem Objekt Buchse tun

io.on('connection', function(socket) { 
    //Obtain the user_id somehow and add it into the socket object 
    socket.user_id = "hello_world"; 

    socket.on('disconnect', function() { 
     console.log(socket.user_id); 
    }); 
});