在中
io.configure,您必须将套接字与http会话链接。
这是一段提取cookie的代码(这是使用socket.io和
xhr-polling,我不知道这是否适用于websocket,尽管我怀疑它会起作用)。
var cookie = require('cookie');var connect = require('connect');var sessionStore = new RedisStore({ client: redis // the redis client});socketio.set('authorization', function(data, cb) { if (data.headers.cookie) { var sessioncookie = cookie.parse(data.headers.cookie); var sessionID = connect.utils.parseSignedcookie(sessioncookie['connect.sid'], secret); sessionStore.get(sessionID, function(err, session) { if (err || !session) { cb('Error', false); } else { data.session = session; data.sessionID = sessionID; cb(null, true); } }); } else { cb('No cookie', false); }});然后,您可以使用以下方式访问会话:
socket.on("selector", function(data, reply) { var session = this.handshake.session; ...}这还具有另一个好处,即它检查是否存在有效的会话,因此只有您登录的用户才能使用套接字。但是,您可以使用其他逻辑。



