我怎么可以使用socket.io和rxjava 2 android

时间:2017-06-26 11:39:26

标签: android socket.io mvp rx-android

我开发了一个带mpv(mosby3)+ socket.io的应用程序。 我想使用rxjava 2来关联提供者和存储库。

我有CategoryManager

public class CategoryManager {
    private List<Category> list = null;
    ...
}

如果list not null我可以做到

public Single<List<Category>> getList() {
    return Single.just(this.list);
}

但是,如果我需要加载列表,我就像它一样进行异步

socket.on("category", (data) -> {
    Type founderListType = new TypeToken<ArrayList<Category>>() {}.getType();
    list = gson.fromJson(data[0].toString(), founderListType);
    // here i need to generate event to single subscriber
})

我想我应该用

public Single<List<Category>> getList(int count) {
    return Single.create(s -> {
        if (list == null) {
           socket.emit("category");
           // i need async load list
        } else {
           s.onSuccess(list.subList(0, count));
        }
    });
}

CategoryPresenter应该有像

这样的代码
    disposable.add(session.getCategoryManager()
            .getList(5)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(data -> {
                if (isViewAttached()) {
                    getView().setData(data);
                }
            }, throwable -> {
                throwable.printStackTrace();
            })
    );
}

我认为我可以将订阅者保留在类属性中

private List<SingleEmmiter> subscribers;

并删除setCancellable方法中的订阅者,但我认为这不是一个好主意。

请帮帮我:)。

0 个答案:

没有答案