nodejs中socket.io连接时带参数进行验证

来源:赵克立博客 分类: Nodejs 标签:socket发布时间:2018-01-15 11:13:09最后更新:2018-01-15 12:05:06浏览:6921
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。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
    //     }
    // }
});



微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python