我正在使用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*/);
}
我可以在方法中使用getDeclaredFields()
获取字段,但它不能帮助我进行转换(我需要这些因为dispatcher.subscribe
方法返回基类)。
我想到的下一个解决方案是为所有相关类(dispatcher,channel,dataCallback等)创建完整的自定义类,而不是继承它,但它是一个粗略的解决方案。另一个是联系和图书馆作者。任何更好,更简单的想法将不胜感激。
答案 0 :(得分:0)
问题解决了;我没有注意到我只能通过覆盖DataCallback来实现它。我创建了以下类:
public abstract class CustomWebSocketRailsDataCallback implements WebSocketRailsDataCallback {
public CustomWebSocketRailsDataCallback(String channel)
{
mChannel = channel;
}
public String mChannel = null;
}
创建此类的实例,在mChannel中保存通道名称并在onDataAvailable中访问它。