我正在做一個應用程序,我需要將套接字映射到某個對象。我以爲我會安全使用Socket.IO提供的socket.id變量。不幸的是,在調試的時候,我發現socket.id沒有被客戶端斷開/重新連接或者其他東西而改變。Socket.IO socket.id更改爲同一客戶端,無需重新連接
這裏有一小塊代碼來顯示我想要做的事:
var io = require('socket.io').listen(8080),
var myVariable = new Array();
// Main event loop
io.sockets.on('connection', function (socket) {
socket.on('myEvent', function(data) {
myVariable[socket.id] = data;
}
// 'someOtherEvent' which uses the mapped data.
socket.on('someOtherEvent', function(data) {
// Doesn't always work because socket.id has changed and var is empty
doSomethingWith(myVariable[socket.id]);
}
});
我不知道,但我不認爲這是預期的效果。爲什麼會發生這種情況,我將如何解決這個問題?
不是這樣。代碼示例可能不夠清楚,但只有一個事件觸發了socket.id。最大的問題是使用相同的客戶端,而不重新連接socket.id更改。 – 2012-08-14 07:21:31