imzalı (2012-07-26 itibariyle), ben socket.io gelen bir oturum kimliği almak için aşağıdaki yolu buldum Bu bağlantı redis mağazası ile çalışacaktır. express (bağlayın bağlantı bir yardımcı program ve çerez modülünden) den çok ithal etmek Having(> = 2.4.1) bağlamak ayrıştırmak socket.io bağlantı en son sürümü ile oturum tanımlama
var express = require('express')
, routes = require('./routes')
, fs = require('fs')
, http = require('http')
, io = require('socket.io')
, redis = require('connect-redis')
, connect = require('express/node_modules/connect')
, parseSignedCookie = connect.utils.parseSignedCookie
, cookie = require('express/node_modules/cookie');
var secret = '...';
var rStore = new(require('connect-redis')(express));
//...
var server = http.createServer(app);
var sio = io.listen(server);
sio.set('authorization', function(data, accept) {
if(data.headers.cookie) {
data.cookie = cookie.parse(data.headers.cookie);
data.sessionID = parseSignedCookie(data.cookie['connect.sid'], secret);
} else {
return accept('No cookie transmitted', false);
}
accept(null, true);
});
data.sessionID
daha sonra böyle
olarak kullanılabilir
sio.sockets.on('connection', function(socket) {
console.log('New socket connection with ID: ' + socket.handshake.sessionID);
rStore.get(socket.handshake.sessionID, function(err, session) {
//...
});
});
almanın aşırı dolambaçlı bir yol gibi görünüyor bağlanan imzalı çerezleri ayrıştırmak için gerekli işlevler. Başka bir yol bulamadı mı?
bkz nasıl çalıştığı konusunda daha fazla ayrıntı için
. Çözümünüz beni çok fazla zaman kazandı, yayınladığınız için teşekkürler! Üzgünüm, başka bir şey öneremem. – LDK