gpt4 book ai didi

javascript - 从 socket.io 获取断开连接的用户

转载 作者:行者123 更新时间:2023-11-29 23:50:12 25 4
gpt4 key购买 nike

我正在用 Node.js 编写实时聊天系统。在用户与服务器连接的地方,我正在创建唯一的哈希 key [一次性创建] 并加入他的新聊天室。我想显示用户是否在线。当用户断开套接字时,我无法获取用户的聊天室,因此无法确定用户是否在线。请建议有没有更好的方法来做到这一点。

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。

最佳答案

创建新的聊天用户时,您还需要将 socket.id 存储在新用户的新列中。然后当用户断开连接时,您可以通过 socket.id 搜索用户。

chat.createChatRoom(con, socket.id, user.email, user.phone, function (res,user_id,chatToken) {...})

实际上,如果唯一的目的是识别套接字连接,您甚至不需要自己创建聊天 token 。因为 socket.id 是随机的、不可猜测的、每个套接字连接的唯一标识符。

关于javascript - 从 socket.io 获取断开连接的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42942823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com