ararog の WebSocket Rails-Android ライブラリを使用しています。
サーバー側から受信したデータに基づいて、ループ内のいくつかのチャネルにサブスクライブします。すべてのチャネルに同じ WebSocketRailsDataCallback を使用していますが、唯一異なるのはチャネル名です。私の問題は、コールバックのonDataAvailable(Object data)
データに受信した JSON のみが含まれており、チャネル名が含まれていないことです。応答が受信されたチャネルを知る方法が見つかりませんでした。
WebSocketRailsDataCallback と WebSocketRailsChannel をそれぞれonDataAvailable(Object data, String channelName)
署名とオーバーライドされdispatch
たメソッドで拡張するカスタム インターフェイスとクラスを作成しようとしましたが、クラスの変数はプライベートです。つまり、次のようなコンストラクターを持つことができないため、WebSocketRailsChannel をカスタムにキャストできません。クラス:
public CustomWebSocketRailsChannel(WebSocketRailsChannel channel)
{
super(/*channel arguments*/);
}
inメソッドを使用してフィールドを取得できますが、getDeclaredFields()
キャストには役立ちません(dispatcher.subscribe
メソッドが基本クラスを返すために必要です)。次に考えた解決策は、関連するすべてのクラス (dispatcher、channel、dataCallback など) を継承するのではなく、フル カスタム クラスを作成することでしたが、それは大雑把な解決策です。もう 1 つは、連絡先とライブラリの作成者です。より良い、より単純なアイデアは高く評価されます。