Server.js
var nicknames = []
var old_messages = []
io.sockets.on('connection',function(socket){
socket.on('nickname',function(data, callback){
if (nicknames.indexOf(data) != -1){
callback(false);
}else{
callback(true);
nicknames.push(data);
socket.nickname = data;
io.sockets.emit('nicknames', nicknames);
//------------ send the old messages-------------
io.sockets.emit('old_messages', old_messages);
}
});
socket.on('user message',function (data){
// ------------ Update de old_message list --------------
old_messages.push(socket.nickname + " - " +data);
if (old_messages.length > 10)
{var aux = old_messages.pop()}
io.sockets.emit('user message', {
nick: socket.nickname,
message: data
});
});
socket.on('disconnect', function(){
if (!socket.nickname) return;
if (nicknames.indexOf(socket.nickname) > -1){
nicknames.splice(nicknames.indexOf(socket.nickname),1);
}
io.sockets.emit('nicknames', nicknames);
});
});
Client.js
var socket = io.connect();
jQuery(function ($) {
var sendMessage= $('#send-message');
var nickName = $('#nickname');
var setNicknameForm = $('#set-nickname');
var firstTime = true;
setNicknameForm.submit(function(event){
event.preventDefault();
socket.emit('nickname',nickName.val(),function(data){
if (
setNicknameForm.hide();
sendMessage.show();
} else {
setNicknameForm.prepend('<p> Ya esta cogido </p>');
}
// Uptade messages
socket.on ('old_messages', function(data){
if (firstTime){
for (var i=1; i<data.length(); i++){
$('#messages').append($('<p>').text(data[i]));
};
firsTime = false;
};
});
socket.on('nicknames',function(data){
$('#nicknames').empty().append($('<ul>'));
for(var i=0; i<data.length; i++) {
$('#nicknames ul').append('<li>' + data[i]);
}
});
});
});
sendMessage.submit(function(event){
event.preventDefault();
socket.emit('user message',$('#message').val());
$('#message').val('');
});
socket.on('user message',function(data){
$('#messages').append($('<p>').text(data.nick+" - "+data.message));
});
谢谢..这正是我的想法..但我很想看看别人有什么要说的! :) – Manu