无法在socket.io握手对象上设置属性

时间:2014-10-04 16:09:20

标签: node.js express socket.io passport.js

我正在尝试向socket.io握手添加自定义属性,并将其传递给每个连接的套接字对象。

在我正在做的事情的极少设置之下:

var app = express();
var http = require("http").Server(app);

var io = require("socket.io")(http);

io.set('authorization', function(data, callback){
  data.foo = 'bar';
  callback(null, true);
});

上面应该可以访问socket.handshake对象上的foo属性,但是,执行以下操作:

io.sockets.on('connection', function (socket) {
    console.log(socket.handshake.foo); //This should return bar
});

返回未定义的。

1 个答案:

答案 0 :(得分:1)

在Socket.IO 1.0中,不再有handshake个对象,它已被socket.request取代。

这应该有效:

io.sockets.on('connection', function (socket) {
    console.log(socket.request.foo);
});

Look here for more info on the differences between 0.9 and 1.0.

请记住,您在线查找的大多数资源/教程都将使用Socket.IO 0.9,因此本页面上的知识非常有用;)