Ich schreibe ein Live-Chat-System in Node.js. Wenn der Benutzer sich mit dem Server verbindet, erstelle ich einen einmaligen Hash-Schlüssel [einmalige Erstellung] und schließe mich ihm im neuen Chat-Raum an. Ich möchte zeigen ob der Benutzer online ist oder nicht. Während der Benutzer den Socket trennt, konnte ich den Chat-Raum des Benutzers nicht abrufen, so dass ich nicht finden konnte, ob der Benutzer online war oder nicht. Pls schlagen vor, gibt es einen besseren Weg, das zu tun.Erhalten Sie den getrennten Benutzer von socket.io
Server.js
socket.on('newUser',function (user) {
chat.createChatRoom(con, user.email, user.phone, function (res,user_id,chatToken) {
chatToken="TOK"+chatToken; //Here we using TOK for some identical purposes
chatRoom(socket,chatToken,1);
io.sockets.in(chatToken).emit('newUser', {chatToken:chatToken,user_id:user_id,response:res,rooms:io.sockets.adapter.rooms});
io.emit('userConnects',chatToken);
console.log(JSON.stringify(io.sockets.adapter.rooms));
});
});
erstellen Chat-Raum Funktion:
var createChatRoom = function (con, email, phone,callback) {
var chatToken = require('crypto').createHash('md5').update(email).digest("hex");
con.query("SELECT * FROM USER WHERE `email`='" + email + "'", function (error, result) {
if (error) throw error;
if (result.length == 0) {
con.query("INSERT INTO user(email,chat_token,phone) VALUES('" + email + "','" + chatToken + "','" + phone + "')", function (error1, result1) {
return callback(1,result1.insertId,chatToken);
});
} else {
return callback(0,result[0].user_id,chatToken);
}
});
};
Während Benutzer die Verbindung trennt ich chatToken erhalten möchten. Aber ich kann nur Socket-ID bekommen.
I Ich möchte einen einzigartigen und permanenten ChatToken, damit ich besonders neue Nachrichten auslösen kann. Die Socket-ID ist zufällig, so dass ich herausfinden konnte, welcher Benutzer nicht verbunden ist. –
@SarathKumar Jedes Zimmer kann mehrere Sockets (Benutzer) haben, so dass es besser wäre, die Benutzer, die zum Chatroom gehören, in einer anderen Tabelle zu behalten. So können Sie Benutzer hinzufügen und entfernen (mit der socket.id, um Raummitglieder zu identifizieren), wenn sie sich verbinden oder trennen. Räume trennen nicht, Benutzer tun. Und Sie können an alle Mitglieder des Raumes mit dem ChatToken senden. –
Aber hier erstelle ich separaten Chat-Raum für jeden Kunden. Um private Nachrichten zu senden. –