Düzenleme: Çalışmayan bazı modülleri denedikten sonra, bunu yapmak için aslında kendi kitaplığımı yazdım. Utanmaz eklenti: https://github.com/aviddiviner/Socket.IO-sessions adresinden kontrol edin . Eski yazımı aşağıda tarihsel amaçlarla bırakacağım:
Yukarıdaki pr0zac çözümüne göre flaş soket aktarımını atlamak zorunda kalmadan bu işi oldukça düzgün bir şekilde yaptım . Ayrıca Socket.IO ile express kullanıyorum. Nasıl yapacağınız burada.
İlk olarak, oturum kimliğini görünüme geçirin:
app.get('/', function(req,res){
res.render('index.ejs', {
locals: {
connect_sid: req.sessionID
}
});
});
Ardından, görünümünüzde, Socket.IO istemci tarafına bağlayın:
<script>
var sid = '<%= connect_sid %>';
var socket = new io.Socket();
socket.connect();
</script>
<input type="button" value="Ping" onclick="socket.send({sid:sid, msg:'ping'});"/>
Ardından sunucu tarafındaki Socket.IO dinleyicinizde, onu alın ve oturum verilerini okuyun / yazın:
var socket = io.listen(app);
socket.on('connection', function(client){
client.on('message', function(message){
session_store.get(message.sid, function(error, session){
session.pings = session.pings + 1 || 1;
client.send("You have made " + session.pings + " pings.");
session_store.set(message.sid, session);
});
});
});
Benim durumumda, kitaplığı session_store
kullanan Redis'im redis-connect
.
var RedisStore = require('connect-redis');
var session_store = new RedisStore;
app.use(express.session({ store: session_store }));
Umarım bu, Google'da arama yaparken bu gönderiyi bulan birine yardımcı olur (benim yaptığım gibi;)