【发布时间】:2015-04-13 03:25:43
【问题描述】:
对不起,如果标题太模糊,我不太确定问题出在哪里。
我正在尝试制作一个允许用户启动和加入房间的基本程序。当按下开始按钮时,房间会以随机字符串代码开始,其他用户可以使用该代码加入。我将每个房间的成员计数器存储在一个对象“房间”中,使用房间代码作为键,计数作为值。但是,当尝试增加值时,它会将值返回为 NaN。
我在下面附上了我的代码,它使用 express 4.10.2 和 socket.io 1.3.5:
index.html中的javascript,包含在body标签中
var socket = io.connect();
//possible characters in room code
var chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
//for generating random room codes
function randomString(c,length){
var str = ''
for(var i=0; i<length;i++){
str += c[Math.round(Math.random()*(c.length-1))]
}
return str;
}
$('#join').submit(function(){
socket.emit('joinroom', $('#code').val());
});
$('#start').submit(function(){
socket.emit('startroom', randomString(chars,5));
});
//listener for 'updatecounter', updates room member count
socket.on('updatecounter', function(count){
$('#roomcount').append('<p>'+count.toString()+'</p>');
});
//listener for 'updateroom' - should update room code at top
socket.on('updateroom', function(code){
$('#roomcode').append('<h1>'+count.toString()+'</h1>');
});
我的 app.js 有问题的部分:
//available rooms
var rooms = {};
io.sockets.on('connection', function(socket){
// when the client emits 'joinroom', this listens and executes
socket.on('startroom', function(room){
console.log('Starting room: '+room);
//add to serverside list of rooms
rooms[room]=1;
socket.room = room;
socket.join(room);
});
// when the client emits 'joinroom', this listens and executes
socket.on('joinroom', function(room){
console.log('Joining room '+room);
//leave previous room
socket.leave(socket.room);
//join new room
socket.join(room);
//update socket session room title
socket.room = room;
//increase serverside counter
rooms[room]++;
});
socket.on('disconnect', function(){
//decrement counter
rooms[socket.room]--;
//check if room is now empty
if(rooms[socket.room]===0){
delete rooms[socket.room]
}
//leave the room
socket.leave(socket.room);
});
});
感谢任何帮助,我是 JS 以及 Node.js 和 Socket.IO 的初学者。
【问题讨论】:
标签: javascript node.js socket.io