Подключиться к пушеру в приложении android, несколько или один раз? - PullRequest
0 голосов
/ 15 марта 2020

В моем приложении (потоковые сериалы, фильмы) у меня есть раздел для пользователей, который может установить напоминание для серии или фильмов. И я реализую Pusher, чтобы получить сообщение сервера для напоминания данных.

Правда ли, что я подключаюсь к каналу для каждого элемента в списке напоминаний? или я должен подключиться к толкателю один раз и в событии толкателя получить сообщение о серии / фильмах? (Реализован ли толкатель на стороне сервера для каждого элемента списка напоминаний, следует ли изменить реализацию на стороне сервера или я могу подключиться к толкателю для каждого элемента?)

Это моя реализация для толкателя:

 public Pusher getPusher() throws Exception {
        if (pusher == null) {
            HttpAuthorizer auth = new HttpAuthorizer(BuildConfig.PUSHER);
            HashMap<String, String> authHeader = new HashMap<>();
            authHeader.put("Authorization", SharedPref.INSTANCE.read(AUTH_TOKEN, ""));
            auth.setHeaders(authHeader);
            PusherOptions option = new PusherOptions();
            option.setCluster(BuildConfig.PUSHER_CLUSTER);
            option.setAuthorizer(auth);
            pusher = new Pusher(BuildConfig.PUSHER_KEY, option);


            pusher.subscribePrivate("private-app_ch." + serialId, new PrivateChannelEventListener() {
                @Override
                public void onAuthenticationFailure(String s, Exception e) {
                    Timber.i("pusher onAuthenticationFailure " + e.getMessage());
                }

                @Override
                public void onSubscriptionSucceeded(String s) {
                    Timber.i("pusher onSubscriptionSucceeded: " + s);
                }

                @Override
                public void onEvent(String s, String s1, String result) {
                    Timber.i("pusher onEvent" + s + ":" + s1);
                    Timber.i("pusher onEvent" + result);


                }
            }, "App\\Events\\AppBroadcastEvent");
        }
        return pusher;
    }

1 Ответ

1 голос
/ 16 марта 2020

Лучшей практикой для этого будет поддержание одного соединения с каналами, но создание подписки для каждого элемента в списке напоминаний.

Таким образом, вы бы позвонили pusher.subscribePrivate для каждого элемента в списке напоминаний, а затем на стороне сервера публикует sh для каждого отдельного канала, когда необходимо отправить напоминание.

Например, если пользователь хотел напомнить о «Чужих вещах» и «Оранжевый - это новый черный», вы бы подписались на:

pusher.subscribePrivate("private-app_ch.strangerthings"

и

pusher.subscribePrivate("private-app_ch.orangeisthenewblack"

Ваш сервер будет публиковать sh напоминаний о «Чужих вещах» в канал Чужих вещей и OISTNB в канал OISTNB и т. Д.

Таким образом, клиенту (серверу отправляются только соответствующие обновления). фильтрация). Если вы подпишетесь только на один канал, клиент получит сообщения, о которых он может не хотеть обновлений, и вам придется отфильтровать их на стороне клиента.

Это также объясняется здесь: https://support.pusher.com/hc/en-us/articles/360025398514-Should-i-subscribe-to-lots-of-Channels-

Еще один важный момент, который стоит учитывать, заключается в том, что каналы будут поддерживать активное соединение, только когда приложение открыто. Соединение будет закрыто, когда приложение будет заземлено / закрыто. Это означает, что для отправки напоминаний пользователь всегда должен быть в вашем приложении. Вы можете также рассмотреть возможность отправки уведомлений pu sh, когда приложение закрыто, чтобы пользователь не пропустил напоминания.

...