Всем привет. Есть такая задача : 1. Есть сервер на express 2. Авторизация на паспорте с локальной стратегией 3. Socket.io
Как я понял, после авторизации паспорт сохраняет экземпляр юзера в req.user, однако как можно эти данные получить при инициализации сокета ? т.е. динамически их передавать для каждого авторизованного. server.js
var express = require('express');
var app = express();
var session = require('./models/session');
var passport = require('passport');
require('./models/auth')(passport);
var router = require('./routes/index');
app.use(session);
app.use(passport.initialize());
app.use(passport.session());
var ioServer = require('./models/socket')(app);
ioServer.listen(port, () => {
console.log('localhost:' + port);
});
session.js
var session = require('express-session');
var config = require('config');
var init = function () {
return session({
secret: config.get('Customer.session.secret'),
key: config.get('Customer.session.key'),
cookie: config.get('Customer.session.cookie'),
resave: false,
unset: 'destroy',
saveUninitialized: true
})
};
module.exports = init();
ioServer.js
var redis = require('redis').createClient;
var adapter = require('socket.io-redis');
var config = require('config');
var session = require('../session');
var ioEvents = function (io) {
io.of('/user-groupchat').on('connection', function (socket) {
// вот тут как то нужно получить req.user ????
});
io.of('/user-messages').on('connection', function (socket) {
// вот тут как то нужно получить req.user ????
});
};
var init = function (app) {
var server = require('http').Server(app);
var io = require('socket.io')(server);
io.set('transports', ['websocket']);
let port = config.get('Customer.redis.port');
let host = config.get('Customer.redis.host');
let pubClient = redis(port, host);
let subClient = redis(port, host, { return_buffers: true, });
io.adapter(adapter({ pubClient, subClient }));
io.use((socket, next) => {
session(socket.request, {}, next);
});
ioEvents(io);
return server;
};
module.exports = init;
Вообщем необходимо кидать события разным юзерам в зависимости от их параметров, посоветуйте мб переделать реализацию, или как мне закинуть в блок инфу из реквеста ?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В БД имеется таблица со столбцами id и followersИмеется 3 пользователя соответственно с id = 1, 2, 3 и пустыми полями столбца followers
Я читаю книгу Линн Бейли изучаем SQLНа странице 200 есть два правила на пути нормализации таблицы, атомарные данные
Нужно обновить последнюю запись в таблицеКлючевое поле автоинкрементное