Я пытаюсь понять основы файлов cookie / сеансов / сокетов для создания простой онлайн-игры. Для этой цели у меня есть идея использовать «express -session» для создания идентификатора сеанса для каждого игрока, который позже я могу использовать для идентификации каждого игрока, когда я перенаправляю их с одной страницы на другую, чтобы я мог идентифицировать каждая новая розетка с "предыдущими". Мой код приведен ниже, и у меня есть два вопроса:
Я провел тесты с использованием двух базовых c htmls, в которых одна кнопка перенаправляет вас на другой. Если браузер никогда не видел localhost (поэтому файлы cookie не регистрируются), файлы cookie создаются, и независимо от того, сколько раз я перенаправляю с одного веб-сайта на другой, идентификатор сеанса не меняется, что хорошо!
Первый вопрос: почему значение connect.sid cook ie не соответствует строке, которую я получаю в консоли с помощью console.log(req.cookies)
?
Однако в тот момент, когда я вношу изменение в код, я остановить выполнение Node.js и перезапустить его, так как в браузере теперь есть "connect.sid" cook ie, по непонятной мне причине он постоянно создавал новый сеанс с каждым запросом. Вариант решения этой проблемы, о чем я читал, состоит в том, чтобы изменить хранилище на DB, например Mon go и Redis, но мой вопрос: если Cook ie уже существует с сеансом, почему нельзя Я использую это / есть способ сделать так, чтобы "express -session" знала об этом, чтобы использовать "прошлый сеанс"? Это происходит из-за того, что каждый раз, когда я перезапускаю сервер, хранилище «MemoryStore» отличается? И если это из-за этого, почему поведение меняется при использовании Redis или Mon go? Я действительно чувствую, что что-то упускаю, поэтому надеюсь, что кто-нибудь сможет прояснить мне эти вопросы, спасибо.
var express = require('express');
var app = express();
var serv = require('http').Server(app);
var cookieParser = require('cookie-parser');
// Middlewares
app.use(express.json());
app.use(cookieParser());
var session = require('express-session');
app.use(session({
secret : 'Banana',
saveUninitialized : true,
resave : true,
cookie : { secure: false} // If HTTPS, then should be set to true
}));
app.get('/', function(req, res) {
console.log(req.cookies)
res.sendFile(__dirname + '/client/index.html');
});
app.get('/second', function(req, res) {
console.log(req.cookies)
res.sendFile(__dirname + "/client/test.html")
})
serv.listen(2000);