我正在使用 ararog 的 WebSocket Rails-Android 库。
我根据从服务器端收到的数据循环订阅了几个频道。我对所有通道使用相同的 WebSocketRailsDataCallback,唯一不同的是通道名称。我的问题是回调的onDataAvailable(Object data)
数据只包含接收到的 JSON,它不包含通道名称,并且我无法找到一种方法来知道在哪个通道上收到了响应。
我尝试创建自定义接口和类,分别使用onDataAvailable(Object data, String channelName)
签名和覆盖dispatch
方法扩展 WebSocketRailsDataCallback 和 WebSocketRailsChannel,但类的变量是私有的,这意味着我不能有如下构造函数,因此无法将 WebSocketRailsChannel 转换为自定义班级:
public CustomWebSocketRailsChannel(WebSocketRailsChannel channel)
{
super(/*channel arguments*/);
}
我可以使用 in 方法获取字段getDeclaredFields()
,但它不能帮助我进行强制转换(我需要它,因为dispatcher.subscribe
方法返回基类)。我想到的下一个解决方案是为所有相关类(调度程序、通道、dataCallback 等)创建完整的自定义类,而不是继承它,但这是一个粗略的解决方案。另一个是联系和图书馆作者。任何更好和更简单的想法将不胜感激。