【问题标题】:cannot set property on socket.io handshake object无法在 socket.io 握手对象上设置属性
【发布时间】:2014-11-29 10:29:30
【问题描述】:

我正在尝试将自定义属性添加到 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
});

返回一个未定义的。

【问题讨论】:

  • 我认为您定义 foo 的对象是副本,而不是对实际握手对象的引用。

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


【解决方案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,因此本页上的知识非常有用;)

【讨论】:

    猜你喜欢
    • 2014-10-10
    • 2015-03-14
    • 2010-12-04
    • 2014-03-29
    • 2015-08-14
    • 1970-01-01
    • 2014-11-18
    • 2011-05-03
    相关资源
    最近更新 更多