2011-12-26 12 views
2

私は現在Faye.jsで遊んでいます。チャンネルを購読すると、その特定のクライアントは、すでにチャンネルに登録されている誰とも関係のないオブジェクトを受け取ることができます。チャンネル全体ではなく特定のクライアントにデータを送信する

これはどのように達成できますか?

詳細: オブジェクトは、部屋の最後の20のチャットコメントの配列です。すでに部屋にいる人は誰でもこのオブジェクトを既に受け取っているか、チャットの一部であったため、これらのオブジェクトを受け取る必要はありません。

ありがとうございます。

答えて

1

私が遭遇した唯一の方法は、クライアント側のGUIDを生成することです。クライアントが接続すると、「パブリック」チャネルを介して他のユーザーに自分自身を通知するので、GUIDを使用してこのクライアントに直接メッセージを送信できます。

たとえば、答えのコードをthis previous questionから取って、UUIDのようなものを生成します。

あなたは、このようなクライアント側で何かを行うことができます:

var guid = guidGenerator(); 
client.subscribe('/privChannel_' + guid, onPrivateMessage); 
client.subscribe('/pubChannel', onPublicMessage); 
client.publish('/announce', { 'myId': guid }); 

function onPrivateMessage() { 
// do something 
}; 

function onPublicMessage() { 
// do something 
}; 
サーバーには、必ず「/発表」のチャンネルに加入しなければならない、と任意のメッセージは、そのチャネルにポストされたとき、それがいることを保存する必要があります

特定のクライアントを識別できるようにします。次に、サーバーはこのIDを使用して、このクライアントのみがサブスクライブされるチャネルにパブリッシュできます。

ただし、これは機密データの場合はお勧めできません。他のクライアントは、「/ announce」を購読し、悪意のある目的のためにguidを養成することもできます。

+0

返信いただきありがとうございます - クライアントごとにGUIDを使用する場合の例がありますか? – Julio

+0

私はいくつかの単語を追加しました。 –

関連する問題