Beispiel #1
0
function sanitizeName(newnick) {
	var sanitized = '';
	if(newnick === null) {
		sanitized = name.generate();
	} else {
		sanitized = escapeHtml(newnick.trim());
		if(sanitized == '') {
			sanitized = name.generate();
		}
	}
	return sanitized;
}
Beispiel #2
0
io.on('connection', function(client){
	var session = {uuid:null, name:name.generate()};
	sessions[client.sessionId] = session;

	client.on('message', function(message){
		switch(message.type) {
			case 'DEQUEUE':	// someone has removed a song
				removeFromQueue(message.uuid, session);
				break;

			case 'MSG': // someone has sent a message
				message.who=session.name;
				util.log('user:'******':'+session.name+': '+message.message);
				io.broadcast(message);
				break;

			case 'NICK':  // user changes nickname
				var oldname = session.name;
				session.name = sanitizeName(message.name);
				io.broadcast({
			                type:'NICK'
			                ,uuid:session.uuid
			                ,oldname:oldname
			                ,name:session.name
			        });
				util.log('user:'******':'+oldname+' is now '+session.name);
				break;

			case 'READY': // user is ready for music
				if(currentSongStarted) {
					client.send({
						type:'PLAY'
						,song:songs[queue[0]]
						,position:(new Date().getTime())-currentSongStarted
					});
				};
				break;

			case 'USER': // user has joined the page
				session.uuid = message.uuid;
				session.name = sanitizeName(message.name);
				client.send({
			                type:'NICK'
			                ,uuid:session.uuid
			                ,name:session.name
			        });
				util.log('Client '+client.sessionId+' user:'******' name:'+session.name+' ip:'+client.connection.remoteAddress);

				if((session.uuid in clients) == false) {
					client.broadcast({
						type:'JOIN'
						,uuid:session.uuid
						,name:session.name
					});
				}
				clients[session.uuid] = client.sessionId;
				client.send({
					type:'NAMES'
					,members:getMembers()
				});
				client.send({
					type:'SONGS'
					,queue:queue
					,songs:getSongs()
				});
				if(!currentSongStarted) {
					client.send({type:'STOP'});
				}
				break;

			default: // should never see this
				util.log('user:'******':'+session.name
					+'; unknown message:'+util.inspect(message, true, null));
				break;
		}
	});

	// someone has disconnected
	client.on('disconnect', function(){
		var session = sessions[client.sessionId];
		var clientid = clients[session.uuid];

		if(session.uuid && clientid && clientid == client.sessionId) {
			client.broadcast({
				type:'PART'
				,uuid:session.uuid
			});
			delete clients[session.uuid];
		}
		delete sessions[client.sessionId];
	});
});