Node.js Passport.SocketIo-如何使用NodeJS、Express和Passport获取在线用户列表
我用Node.js Passport.SocketIo-如何使用NodeJS、Express和Passport获取在线用户列表,node.js,express,socket.io,passport.js,Node.js,Express,Socket.io,Passport.js,我用MongoStore完成了sessionStore,每次登录都正确执行,会话写入数据库时没有错误。我正在使用此软件包将passport与socket io对齐,但我已经查找了几个地方,了解登录后如何处理会话存储,因此它列出了哪些具有姓名的用户处于联机和脱机状态,可以告诉我一些信息吗 app.js var express = require('express'); var mongoose = require('mongoose'); var path = require('path'); v
MongoStore
完成了sessionStore
,每次登录都正确执行,会话写入数据库时没有错误。我正在使用此软件包将passport与socket io对齐,但我已经查找了几个地方,了解登录后如何处理会话存储
,因此它列出了哪些具有姓名的用户处于联机和脱机状态,可以告诉我一些信息吗
app.js
var express = require('express');
var mongoose = require('mongoose');
var path = require('path');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var session = require('express-session');
const MongoStore = require('connect-mongo')(session);
var flash = require('connect-flash');
var logger = require('morgan');
var passport = require('passport');
var passportSetup = require('./passport-setup');
// import routes
var routes = require('./routes');
// setup express app
var app = express();
app.use(logger());
// setup connection with mongodb
mongoose.connect( process.env.MONGODB_URI || "mongodb://smachs:***@d***.mlab.com:****/****-messenger",
(err, db)=> {
if (err) return new Error(err);
console.log('You can track connection, disconnect, login and logout events to create a list of online users.
You can manage online users in RAM or you can use redis for that. Following code snippet may help you achieve your goal -
// Store userIds here
let onlineUsers = [];
io.on('connection', function (socket) {
socket.on('login', (userTokenOrId) => {
// store this to onlineUsers or redis
// Other stuff
});
socket.on('logout', (userTokenOrId) => {
// remove this from onlineUsers or redis
// Other stuff
});
socket.on('disconnect', (userTokenOrId) => {
// remove this from onlineUsers or redis
// Other stuff
});
});
var express=require('express');
var mongoose=require('mongoose');
var path=require('path');
var bodyParser=require('body-parser');
var cookieParser=require('cookie-parser');
var会话=需要(“快速会话”);
const mongostre=require('connect-mongo')(会话);
var闪存=需要(“连接闪存”);
var记录器=需要('morgan');
var passport=需要(“passport”);
var passportSetup=require('./passportSetup');
//进口路线
变量路由=需要('./路由');
//安装快捷应用程序
var-app=express();
app.use(logger());
//设置与mongodb的连接
mongoose.connect(process.env.MONGODB|u URI |”mongodb://smachs:***@d***.mlab.com:***/*****-messenger“,
(误差,db)=>{
if(err)返回新的错误(err);
log(“您可以跟踪连接、断开连接、登录和注销事件,以创建联机用户列表。
您可以在RAM中管理在线用户,也可以使用redis进行管理-
为了更好地使用,您可以管理一个对象数组来存储同一个对象的userId和socketId列表,并管理一个对象来将socketId映射到userId。通过这种方式,您可以跟踪不同浏览器/系统上的一个用户是否在线。查看这是否有帮助?或