Here is what I should expect:
Opens up three browsers, enter 3 different user names, the three browsers should each show that the two other people have arrived in the lobby. Their arrival should entail a smooth animation reveal of the names of the participants. Each person’s name should be accompanied by an invite button.
Demonstrate a chat message originating from each of the participants one at a time. Show that the chat messages show up in all three browsers. Have one of the browsers navigate to a different web page and show that their entry in the other two browsers goes away.
All the functions are executed correctly, except "Have one of the browsers navigate to a different web page and show that their entry in the other two browsers goes away."
Isn’t the ‘delete players’ supposedly execute that function?
Hope someone can help look at the code.
socket.on('join_room',function(payload){
log('\'join_room\' command'+JSON.stringify(payload));
if(('undefined' === typeof payload)|| !payload){
var error_message ='join_room had no payload, command aborted';
log(error_message);
socket.emit('join_room_response', {
result:'fail',
message: error_message
});
return;
}
var room = payload.room;
if(('undefined' === typeof room)|| !room){
var error_message ='join_room didn\'t specify a room, command aborted';
log(error_message);
socket.emit('join_room_response', {
result:'fail',
message: error_message
});
return;
}
var username = payload.username;
if(('undefined' === typeof username)|| !username){
var error_message ='join_room didn\'t specify a username, command aborted';
log(error_message);
socket.emit('join_room_response', {
result:'fail',
message: error_message
});
return;
}
players[socket.id] = {};
players[socket.id].username = username;
players[socket.id].room = room;
socket.join(room);
var roomObject = io.sockets.adapter.rooms[room];
var numClients = roomObject.length;
var success_data = {
result: "success",
room: room,
username: username,
socket_id: socket.id,
membership: numClients
};
io.in(room).emit('join_room_response', success_data);
for(var socket_in_room in roomObject.sockets){
var success_data = {
result: "success",
room: room,
username: players[socket_in_room].username,
socket_id: socket_in_room,
membership: numClients
};
socket.emit('join_room_response', success_data);
}
log('join_room success');
});
socket.on('disconnect',function(socket){
log('Client disconnected'+JSON.stringify(players[socket.id]));
if('undefined' !== typeof players[socket.id] && players[socket.id]){
var unsername = players[socket.id].username;
var room = players[socket.id].room;
var payload = {
username: username,
socket_id: socket.id
};
delete players[socket.id];
io.in(room).emit('player_disconnected', payload);
}
});
socket.on('send_message',function(payload){
log('server received a command', 'send_message',payload);
if(('undefined' === typeof payload)|| !payload){
var error_message ='send_message had no payload, command aborted';
log(error_message);
socket.emit('send_message_response', {
result:'fail',
message: error_message
});
return;
}
var room = payload.room;
if(('undefined' === typeof room)|| !room){
var error_message = 'send_message didn\'t specify a room, command aborted';
log(error_message);
socket.emit('send_message_response', {
result:'fail',
message: error_message
});
return;
}
var username = payload.username;
if(('undefined' === typeof username)|| !username){
var error_message ='send_message didn\'t specify a username, command aborted';
log(error_message);
socket.emit('send_message_response', {
result:'fail',
message: error_message
});
return;
}
var message = payload.message;
if(('undefined' === typeof message) || !message){
var error_message ='send_message didn\'t specify a message, command aborted';
log(error_message);
socket.emit('send_message_response', {
result:'fail',
message: error_message
});
return;
}
var success_data = {
result:'success',
room: room,
username: username,
message: message
};
io.sockets.in(room).emit('send_message_response', success_data);
log('Message sent to room ' + room + ' by ' +username);
});
});