2016-04-27 14 views
1

私はNodeとSocket.ioで最初のチャットアプリケーションを作っています。これまでのところ、client.nickname変数を出力しようとしたときを除いて、すべてが正しく動作しています。NodeJS Socket.io変数が未定義

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); 
    }); 
}); 

マイコンソール出力: は不定:正しいメッセージ。

出力する必要があります: Kyle(またはプロンプトに入力されたもの):正しいメッセージです。

答えて

0

'join'ハンドラにデータを送信する必要があります。

例えば:

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; 
}); 

メモこのコードは試験しませんでした。

+0

ありがとうございます!私はsocket.on( 'join'、ニックネーム)を変更する必要がありました。 〜socket.emit( 'join'、ニックネーム); index.html –

+0

ええ、もっと明確な例に私の答えを更新しましたが、あなたはすでにそれを持っているようです。 – sebenalern