【发布时间】:2018-02-27 19:55:57
【问题描述】:
我正在用 Node.js 编写一个实时聊天系统。在用户与服务器连接的地方,我正在创建唯一的哈希键 [一次性创建] 并将他加入新的聊天室。我想显示用户是否在线。当用户断开套接字时,我无法进入用户的聊天室,因此我无法找到用户是否在线。请建议有没有更好的方法来做到这一点。
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));
});
});
创建聊天室功能:
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);
}
});
};
当用户断开连接时,我想获得 chatToken。但我只能获取套接字 ID。
【问题讨论】:
标签: javascript node.js sockets