2

handshakeFayeを使用すると、またはなどのさまざまなイベントを監視できますsubscribeclient_idこれらのコールバックブロックには、クライアント自体ではなく値のみが提供されます。例えば:

server = Faye::RackAdapter.new(mount: '/faye', timeout: 45)

server.bind(:handshake) do |client_id|
  puts "Received handshake from #{client_id}"
end

与えられたクライアントにアクセスするにはどうすればよいclient_idですか?または、リクエストヘッダーで提供されるCookieなどのハンドシェイクの詳細情報にアクセスするにはどうすればよいですか(その情報が利用可能な場合)?

4

1 に答える 1

6

私の最初の質問は、Faye が 2 つの点でどのように機能するかについての理解の欠如に基づいていると思います。私の質問を削除する代わりに、同様の質問でこれに出くわした他の人のために答えます。(私の答えが間違っている場合は、コメントまたは編集してください!)

まず、Bayeux プロトコルに関して Faye が実装されている方法が原因で、接続されたクライアントへのアクセスが利用できません。すべての通信はチャネル ブロードキャストを介して実行されます。つまり、チャネルをリッスンしているすべての接続が、送信されたメッセージを受信します。

次に、質問に貼り付けたコードは監視を扱います。私が本当に探しているのは拡張機能です。

元の質問で認証を行うには、必要な認証値 (Cookie 値、認証トークンなど) をmessage['ext']値の一部として渡す必要があります (拡張機能ページの例に従って)。次に、サーバー側で、値の場合は何らかの値に/meta/handshake設定して、チャネルでメッセージをリッスンする必要があります。message['error']

于 2012-09-20T19:29:13.517 に答える