io.set(‘authorization’, function(handshakeData, accept) { 设置了session 但是 io.sockets.on(‘connection’, function (socket) { 这里的soket的handshake里面没有session信息
为什么?大神帮忙下
你应该要用io.get(‘authorization’)才能获得把
不是应该socket去set和get吗
//服务端 var io = require(‘socket.io’).listen(80); io.sockets.on(‘connection’, function (socket) { socket.on(‘set nickname’, function (name) { socket.set(‘nickname’, name, function () { socket.emit(‘ready’); }); }); socket.on(‘msg’, function () { socket.get(‘nickname’, function (err, name) { console.log('Chat message by ', name); }); }); });
//客户端 <script> var socket = io.connect(‘http://localhost’); socket.on(‘connect’, function () { socket.emit(‘set nickname’, confirm(‘What is your nickname?’)); socket.on(‘ready’, function () { console.log(‘Connected !’); socket.emit(‘msg’, confirm(‘What is your message?’)); }); }); </script>
你那个实现应该是0.x里面可以用。
你是用的socket.io最新的1.x版本吧,这个版本确实不能在handshake里面存自定义数据了。你可以写一个专门的函数,每次响应事件的时候(connection、disconnect等)从handshake.headers.cookie去获取Session ID,再从session store里面获取对应的session。