0

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 つは、連絡先とライブラリの作成者です。より良い、より単純なアイデアは高く評価されます。

4

1 に答える 1