Wednesday, 11 September 2013

different page with chat node.js

different page with chat node.js

i'm beginning with node.js, in my first example i'm creating a chat. This
char have two page, the first (index.jade) the user insert your nickname
and second page (chat.jade) the user can chat with other users.
i have two problems.
the first: when user insert your name, the system change the page
(chat.jade) and return the your name wrote but the code (
io.sockets.emit('nicknames', nicknames); ) no execute and i think that's
because when change of page no load de funcion en el client
(socket.on('nicknames',function(data){ .....) . Why??
second problem: when a user send a message, the server send a json with
user and message but the client get the user null and message correct. why
the user is null??
code:
index.jade
$('#form-login').submit(function(){
var nickname = $('#nickname').val();
if(nickname !== ''){
socket.emit('login',nickname, function(data){
if(!data){
return false;
}
});
}
});
chat.jade
$('#btnSendMessage').on('click',function(){
var message = $("#message").val();
if(message != ''){
socket.emit('sendMessage',message);
$('#message').val('');
$('#message').focus();
}
});
socket.on('nicknames',function(data){
var $p = $('<p>'+data+'</p>');
$('.users').append($p);
});
//app.js
var nicknames = [];
io.sockets.on('connection', function(socket) {
socket.on('login', function(data, callback){
if (nicknames.indexOf(data) != -1){
callback(false);
}else{
callback(true);
nicknames.push(data);
socket.set('nickname', data);
io.sockets.emit('nicknames', nicknames);
}
});
socket.on('sendMessage', function(data){
socket.get('nickname', function(err, name){
console.log('nickname: '+name);
});
var message = { "nickname":socket.nickname, "data":data };
io.sockets.emit('userMessage', message);
});
});

No comments:

Post a Comment