我創建使用socket.io
的問題Node.js的聊天的是,當我看到的history
的console.log
我看到一個數組與空了很多並在結束我的歷史記錄 [null,null,null......[ { username: 'Nobody Example', message: '231', date: '03/21/2013 14:23:58' } ]]
的NodeJS - 創建數組空數組結果有很多空的
這些空值是如何來到陣列中?
這是我的代碼的一部分。
var history = [];
io.sockets.on('connection', function (socket) {
socket.on('send', function (message) {
var date = time();
io.sockets.in(socket.room).emit('message', socket.username, message, date);
history[socket.room].push({ username: socket.username, message: message, date: date });
console.log(history);
});
socket.on('joinroom', function (room, username) {
socket.room = room;
socket.join(room);
if (typeof history[room] === 'undefined')
history[room] = [];
});
});
編輯更多細節:
創建用於每個房間的空數組時的問題是在「joinroom」事件。
這裏是我做了一些測試:
socket.on('joinroom', function (room, username) {
socket.room = room;
socket.join(room);
console.log(typeof history[room] == 'undefined');
history[room] = [];
console.log(typeof history[room] == 'undefined');
console.log(JSON.stringify(history));
});
控制檯日誌:
true false [null,null,null,null,..................,null,[]]
我想你想'history'是一個對象而不是數組:'VAR歷史= {};' – robertklep 2013-03-21 14:25:49
然後我要去怎麼加每個房間的歷史記錄? '.push()'僅被Array支持。 – 2013-03-21 14:27:21
你不是直接推到'history',而是在*'history'中的數組*上,這樣就可以工作得很好。 – robertklep 2013-03-21 14:29:18