Java 连接到android应用程序中的pusher,多个还是一次?

Java 连接到android应用程序中的pusher,多个还是一次?,java,android,android-studio,kotlin,pusher,Java,Android,Android Studio,Kotlin,Pusher,在我的应用程序(流媒体系列、电影)中,我为用户设置了一个部分,可以为系列或电影设置提醒。我实现了Pusher来接收服务器消息以提醒数据 我连接到提醒列表中每个项目的频道是真的吗??或者我应该连接到推送器一次,并在推送器事件中获取相关系列/电影消息?(服务器端为每个提醒列表项实现推送器,我们应该更改服务器端实现还是我可以为每个项连接到推送器?) 这是我对pusher的实现: public Pusher getPusher() throws Exception { if (push

在我的应用程序(流媒体系列、电影)中,我为用户设置了一个部分,可以为系列或电影设置提醒。我实现了Pusher来接收服务器消息以提醒数据

我连接到提醒列表中每个项目的频道是真的吗??或者我应该连接到推送器一次,并在推送器事件中获取相关系列/电影消息?(服务器端为每个提醒列表项实现推送器,我们应该更改服务器端实现还是我可以为每个项连接到推送器?)

这是我对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;
    }
public Pusher getPusher()引发异常{
如果(推送器==null){
HttpAuthorizer auth=新的HttpAuthorizer(BuildConfig.PUSHER);
HashMap authHeader=新的HashMap();
authHeader.put(“授权”,SharedPref.INSTANCE.read(AUTH_标记,”);
auth.setHeader(authHeader);
PusherOptions option option=新puseOptions();
option.setCluster(BuildConfig.PUSHER\u CLUSTER);
选项。设置授权人(auth);
pusher=新的pusher(BuildConfig.pusher\u键,选项);
subscribebeprivate(“private-app_ch.+serialId,新的PrivateChannelEventListener()){
@凌驾
身份验证失败时的公共无效(字符串s,异常e){
Timber.i(“身份验证失败的推送程序”+e.getMessage());
}
@凌驾
SubscriptionSucceeded上的公共无效(字符串s){
Timber.i(“订购单上的推送员:+s”);
}
@凌驾
public void onEvent(字符串s、字符串s1、字符串结果){
木材i(“推送器onEvent”+s+:“+s1);
木材.i(“pusher onEvent”+结果);
}
},“App\\Events\\AppBroadcastEvent”);
}
回程推进器;
}

最佳做法是保持与频道的一个连接,但对提醒列表中的每个项目进行订阅

因此,您可以为提醒列表中的每个项目调用pusher.subscribebeprivate,然后在需要发送提醒时在服务器端发布到每个单独的频道

例如,如果用户希望提醒“陌生人的事情”和“橙色是新的黑色”,您可以同时订阅这两种内容:

pusher.subscribePrivate("private-app_ch.strangerthings"

然后,您的服务器会将有关“陌生人事物”的提醒发布到陌生人事物频道,并将OISTNB发布到OISTNB频道,以此类推

这样,只向客户端发送相关更新(服务器端筛选)。如果您只订阅一个频道,客户端将收到他们可能不需要更新的消息,您必须在客户端过滤这些消息

这里也解释了这一点:


值得考虑的另一点是,只有当应用程序打开时,频道才会保持活动连接。当应用程序处于后台/关闭状态时,连接将关闭。这意味着要发送提醒,用户必须始终在你的应用程序中。当应用程序关闭时,您可能还需要考虑发送推送通知,这样用户就不会错过提醒。p> 当推送通知可以处理后台/前台消息时,我是否需要推送器@Chris@monabaharlou如果在应用程序处于前台时使用websockets发送大量消息,通常会减少延迟,更适合发送大量消息。但对于少量消息,您可能会发现推送通知已足够
pusher.subscribePrivate("private-app_ch.orangeisthenewblack"