【发布时间】:2018-01-13 16:45:41
【问题描述】:
我正在尝试制作一个聊天应用程序(类似于 Omegle.com),它将母语人士与学习者相匹配。我相信我有正确的算法,但我的 Javascript 不断抛出一条消息,Javascript heap out of memoryerror。
例如,假设Speaker 1 说English 并学习French 和Speaker 2 说French 并学习English(完美匹配)。我的算法显示match found。
队列控制器
socket.emit('in queue', {
speakingLanguages: speakingLanguages,
learningLanguages: learningLanguages
});
socket.on('chat start', function(data){
room = data.room;
$location.path('/chat');
});
server.js
var queue = [];
var rooms = {};
io.sockets.on('connection', function(socket){
console.log('User ' + socket.id + ' connected');
socket.on('in queue', function(data){
socket.speakingLanguages = data.speakingLanguages;
socket.learningLanguages = data.learningLanguages;
if (queue.length != 0){
for (var i = 0; i < queue.length; i++){
for (var j = 0; j < queue[i].speakingLanguages.length; j++){
for (var y = 0; y < socket.learningLanguages.length; y++){
if (queue[i].speakingLanguages[j] === socket.learningLanguages[y]){
console.log('a match was found!');
break;
}else{
queue.push(socket);
break;
}
}
}
}
}else{
queue.push(socket);
}
});
socket.on('send message', function(data){
var room = rooms[socket.id];
io.sockets.in(room).emit('send message', data);
});
});
但是看,当我在浏览器上打开多个窗口来测试很多情况时,我得到了上面的错误。它说我用完了Javascript heap,我已经为此苦苦挣扎了好几个小时,但我不知道该怎么办。
信息:
-
speakingLanguages和learningLanguages是 array 类型(因为人们可以说多种语言并学习多种语言) - 每次找不到匹配的时候,我把它们放到
queue数组中
【问题讨论】:
标签: angularjs node.js socket.io