faye (ディストリビューションに含まれているチャットの例) を使用して、概念実証のチャット アプリケーションを作成しようとしています。
私の概念実証では、クライアントがチャンネルに登録したときに、チャット チャンネルの完全な履歴を送信したいと考えています。私の現在のアイデアは、サブスクリプション応答メッセージのカスタム フィールドを使用してこれを実装することでした。
bayeux プロトコル定義を確認したところ、サブスクリプション応答メッセージで「ext」フィールドが許可されているようです。
しかし、サーバー エクステンションを使用して、この ext フィールドに何も追加できませんでした。
class ServerLog
def incoming(message, callback)
puts " msg: #{message}"
unless message['channel'] == '/meta/subscribe'
return callback.call(message)
end
# the following line changes absolutely nothing
message['ext'] = 'foo'
callback.call(message)
end
end
App.add_extension(ServerLog.new)
ext フィールドの設定によってサーバーがクラッシュすることはありませんが、サブスクリプションの応答メッセージにはまったく影響しません。Wireshark を使用して確認したこともあります (js クライアントが一部のフィールドを無視しないようにするためです)。