socket.io问题
发布于 10 年前 作者 node-rookie 4848 次浏览 最后一次编辑是 8 年前

io.set(‘authorization’, function(handshakeData, accept) { 设置了session 但是 io.sockets.on(‘connection’, function (socket) { 这里的soket的handshake里面没有session信息

为什么?大神帮忙下

4 回复

你应该要用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。

回到顶部