将socket.io ID与express和passport链接
我的简单尝试的目标是显示在线用户列表。我的意思是显示用户配置文件而不是socket.io ID。当授权用户连接到我的服务器时,打开socket.io通道,需要获取他的个人资料并向其他连接的用户发送新用户(姓名、电子邮件等)已连接的消息。我看到了许多如何在授权范围内执行此操作的示例,但它不能处理断开连接。在伪代码中我想做什么和不能做什么:将socket.io ID与express和passport链接,express,socket.io,passport.js,Express,Socket.io,Passport.js,我的简单尝试的目标是显示在线用户列表。我的意思是显示用户配置文件而不是socket.io ID。当授权用户连接到我的服务器时,打开socket.io通道,需要获取他的个人资料并向其他连接的用户发送新用户(姓名、电子邮件等)已连接的消息。我看到了许多如何在授权范围内执行此操作的示例,但它不能处理断开连接。在伪代码中我想做什么和不能做什么: var io = require("socket.io").listen(server); io.set("authorization", function(d
var io = require("socket.io").listen(server);
io.set("authorization", function(data, callback){
// ... some code...
callback(null, true);
});
io.sockets.on('connection', function (socket) {
var UserProfile = passport.getUserProfile(socket.id)
io.sockets.emit('user_connected', {UserProfile: UserProfile, socketID: socket.id});
io.sockets.on('disconnect', function (socket) {
io.sockets.emit('user_disconnected', {socketID: socket.id});
});
});
这是一个伪代码我的书堆满了。我只想在连接中将socket.io ID和passport帐户链接在一起。我该怎么做呢?我也遇到了同样的问题,我的解决方案如下(希望有人有更好的想法):
- 我将用户名添加到渲染调用(使用jade): res.render('聊天室',{username:req.user.username})李>
- 在连接到客户机上的套接字(io.connect)之后,我立即发出 使用客户端上的connect事件(socket.on('connect',function(data){…}),将用户名作为参数发送给服务器的消息
- 在服务器上,我将用户名存储在一个对象中(clients[socket.id] =用户名)
- 之后,我通过访问每个套接字消息来获取用户名 客户反对