express-socket.io-session
express-socket.io-session copied to clipboard
Keep session when we refresh page
Hi Admin, I am following this package and I have a problem with session in socket I can not keep value session when I refresh page cause it will be create new connection on socket.
I do not how to keep value in session
Look at my code
var app = require('express')(), server = require("http").Server(app), io = require("socket.io")(server), redis = require('redis'), session = require("express-session")({ secret: "my-secret", resave: true, saveUninitialized: true }), sharedsession = require("express-socket.io-session");
server.listen(3000, function () { console.log('listen on 3000'); });
// Attach session app.use(session);
// Share session with io sockets
io.use(sharedsession(session));
var redisClient = redis.createClient(6379, '192.168.180.237'); //var redisClient = redis.createClient(6379, '10.149.47.110'); redisClient.subscribe('message'); var global_scoket;
io.on("connection", function(socket) { console.log('A new connect' + socket.id); global_scoket = socket; });
redisClient.on("message", function (channel, message) { message = JSON.parse(message); console.log(message.type);
if (message.type == 'conversationUserTurn' && message.data.conversation_id) {
if (!global_scoket.handshake.session.conversations) {
console.log('create_conversations');
global_scoket.handshake.session.conversations = [];
}
// Calculator how many seconds reset
var conversation_user_turn = message.data.conversation_user_turn;
var updated_date = (conversation_user_turn.updated_date * 1000) + 30000;
var end_time = updated_date - Date.now();
console.log(global_scoket.handshake.session.conversations);
if (end_time <= 0) {
console.log(end_time);
io.sockets.emit('timer:finish:' + message.data.conversation_id, {conversation_user_turn: conversation_user_turn});
} else {
console.log(end_time);
if (!global_scoket.handshake.session.conversations[message.data.conversation_id]) {
global_scoket.handshake.session.conversations.push(message.data.conversation_id);
global_scoket.handshake.session.save();
console.log(global_scoket.handshake.session.conversations);
setInterval(function () {
end_time--;
io.sockets.emit('timer:' + message.data.conversation_id, {end_time: end_time});
if (end_time == 0) {
io.sockets.emit('timer:finish:' + message.data.conversation_id, {conversation_user_turn: conversation_user_turn});
}
}, 1000);
}
}
io.sockets.emit(channel + ':' + message.type, message.data);
} else if (message.data.conversation_id) {
// Handle for detail conversation
io.sockets.emit(channel + ':' + message.type + ':' + message.data.conversation_id, message.data);
} else {
// Handle for add conversation and conversation user
io.sockets.emit(channel + ':' + message.type, message.data);
}
});