微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – 没有express.js的Socket.io会话?

我想通过node.js和 socket.io对websockets进行会话处理,而不必使用cookie并避免使用express.js,因为应该还有客户端不在浏览器环境中运行.有人已经做过这个或者有过概念验证的经验吗?

解决方法

在建立socket.io连接之前,有一个握手机制,认情况下,所有正确传入的请求都成功握手.但是,有一种方法可以在握手期间获取套接字数据,并根据您选择接受或拒绝传入连接请求的方式返回true或false.以下是socket.io docs的示例:

Because the handshakeData is stored after the authorization you can actually add or remove data from this object.

var io = require('socket.io').listen(80);

io.configure(function (){
  io.set('authorization',function (handshakeData,callback) {
    // findDatabyip is an async example function
    findDatabyIP(handshakeData.address.address,function (err,data) {
      if (err) return callback(err);

      if (data.authorized) {
        handshakeData.foo = 'bar';
        for(var prop in data) handshakeData[prop] = data[prop];
        callback(null,true);
      } else {
        callback(null,false);
      }
    }) 
  });
});

回调函数的第一个参数是错误,你可以在这里提供一个字符串,如果没有设置为null,它将自动拒绝客户端.第二个参数是boolean,无论您是否要接受传入的请求.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐