2016-04-12 9 views
0

私はsocket.ioを使用していますが、現在はすべてが素晴らしいですが、特定のクライアントにデータを送信したいと思います。しかし、私はsedクライアントのソケットIDを取得する方法がわかりません。私は接続時に余分なデータを送信したい。socket.io onconnect余分なデータを送信

私が試してみました

if (steamID != "" && steamName != "") { 
    socket.emit("username", { 
     socketData: { 
      name: steamName 
     } 
    }); 
} 

とサーバーサイドの:

socket.on('username', function (data) { 
    socket.username = data.socketData.name; 
}); 

clients[socket.id] = { 
    id: socket.id, 
    ip: socket.request.connection.remoteAddress, 
    name: socket.username 
    cons 
} 

console.log(clients); 

私は名前だけを取得しかし:未定義

答えて

1

あなたがnameプロパティの値をチェックし、あなたのコードの一部では?指定したコードは、最初にに未定義の値を割り当てます。これはsocket.usernameがまだ定義されていないためです。 on("username")イベントが呼び出されると、socket.usernameに値が割り当てられます。メッセージのコールバックにconsole.log(data)を入れたら、何を得るのですか?

+0

私はconsole.log()がクライアントの直後にあるという質問を編集しました。今すぐコールバックをチェックします。 – Matt

+0

console.log(data)をsocket.on( 'username'、function(data){{ソケット名: 'K1LzR'}}に入れます。これは私のユーザ名です。 – Matt

+0

@Mattこれはあなたの問題です。コールバックが呼び出されてから 'clients [socket.id]'オブジェクトを使用/定義するまで待つ必要があります – jahnestacado

関連する問題