2016-04-27 15 views
1

Ich mache meine erste Chat-App mit Node und Socket.io. Bisher funktioniert alles korrekt, außer wenn ich versuche, die Variable client.nickname auszugeben.NodeJS Socket.io Variable undefined

index.html

var socket = io.connect('http://localhost:3000'); 
    socket.on('connect', function(data){ 
     $('#status').html("Connected!"); 
     var nickname = prompt("Whats ur name?"); 
     socket.on('join', nickname); 
    }); 
    $('#submit-btn').click(function(){ 
     var msg = $('#input_text').val(); 
     socket.emit('messages',msg); 
    }); 

    socket.on('messages', function(data){ 
     console.log(data); 
    }); 

app.js

io.on('connection', function(client){ 
    client.on('join', function(name){ 
    client.nickname = name; 
    }); 
    client.on('messages', function(data){ 
    var nickname = client.nickname; 
    client.broadcast.emit('messages', nickname +": " + data); 
    client.emit('messages', nickname + ": " + data); 
    }); 
}); 

Meine Konsole Ausgänge: undefined: Die richtige Botschaft.

Es soll Ausgang: Kyle (oder was auch immer in der Eingabeaufforderung eingegeben wird): Die richtige Botschaft.

Antwort

0

Sie müssen Daten an den Join-Handler senden.

Zum Beispiel:

index.html

var socket = io.connect('http://localhost:3000'); 
socket.on('connect', function(data){ 
    $('#status').html("Connected!"); 
    var nickname = prompt("Whats ur name?"); 
    socket.emit('join', nickname); // change this line from socket.on('join', nickname); 
}); 
$('#submit-btn').click(function(){ 
    var msg = $('#input_text').val(); 
    socket.emit('messages',msg); 
}); 

app.js

io.on('connection', function(client){ 
    client.on('join', function(name){ 
    client.nickname = name; 
}); 

Hinweis Dieser Code wurde nicht geprüft.

+0

Danke! Ich musste socket.on ändern ('Join', Nickname); zu socket.emit ('Join', Nickname); in der index.html –

+0

Ja, ich habe meine Antwort zu einem klareren Beispiel aktualisiert, aber es sieht so aus, als ob Sie es bereits =). – sebenalern