2014-10-04 50 views
0

我想將一個自定義屬性添加到一個socket.io握手中,並將它傳遞給每個連接處的套接字對象。無法在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 
}); 

返回一個未定義的。

+0

我認爲你正在定義foo的對象是一個副本,而不是對實際的手持對象的引用。 – smk1992 2014-10-04 17:52:41

回答

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,所以這個頁面上的知識非常有用;)