2011-10-31 24 views
8

私はchat.jsとsocket.ioを使ってチャットアプリケーションを作成しています。別のソケットにメッセージを送るには、私はソケットのIDかユーザー名だけを知っています。部屋はなく、クライアントは1つ1つをチャットします。ユニークなソケットにメッセージを送信する

答えて

21

Socket.IOでは、接続機能のコールバック内でソケットオブジェクトを使用することだけに制限されません。特定のユーザー名のソケットオブジェクトを格納するオブジェクトを作成し、クライアントがメッセージを発行するときにソケットを参照してメッセージを送信することができます。あなたは、すべてのメッセージと共に意図したターゲットを送信する必要があります。

例:

var sockets = {}; 

... 

io.on('connection', function(socket){ 
    socket.on('set nickname', function (name) { 
     sockets[name] = socket; 
    }); 
    socket.on('send message', function (message, to) { 
     sockets[to].emit(message); 
    }); 
}); 

examples page of Socket.IO's websiteの詳細例を参照してください。

+0

素晴らしい、つまりソリューション –

+0

どのように任意のニックネームにも属さないさ「に」ハンドルに?例えば;ニックネーム「A」はニックネーム「B」にメッセージを送信し、ニックネーム「B」はニックネーム「C」にメッセージを送信します。そして、ニックネーム "C"がありません。次にエラー= "プロパティを読み取ることができません '未定義の" – drojokef

0

あなたはこのようなすべてのソケットのユーザ名プロパティを確認することができます。

socket.on('send message', function(message,to){ 

    io.sockets.clients().forEach(function (socket) { 

     if (socket.username==to){socket.emit(message);} 

    }); 

}); 
関連する問題