nodejs中socket.io连接时带参数进行验证
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2018-01-15 12:05:06
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
有时需要socket.io先验证用户信息然后再允许连接操作的功能
var socket = io.connect(socketServer, { 'force new connection': true, 'query': 'uid=111' });
服务器接收参数
io.use(function(socket, next) { var query = socket.request._query; console.log(query.uid); });
服务器已经自动解析为json对象啦可以直接使用
socket.io验证
io.set('authorization', function(handshakeData, accept) { var query = handshakeData._query; console.log(query.uid); //接受连接 accept(null, true); return; // var cookies = cookie.parse(handshakeData.headers.cookie); //解析cookies // var connectSid = cookies['connect.sid']; // if (connectSid) { //判断有无session登陆 // var connected = cookieParser.signedCookie(connectSid, 'technode'); //验证session的secret // if (connected) { // sessionStore.get(connected, function(error, session) { //去session里面取当前用户的数据 // if (error) { // accept(error.message, false) // } else { // handshakeData.headers.sessions = session; //把当前用户数据传给socket.io的handshakeData // if (session.user) { // accept(null, true) //进行下面的链接 // } else { // accept('No login', false) // } // } // }) // } else { // accept('No session', false) //没session // } // } });