1

この Android アプリでは、Pusher を使用してサーバーから Android クライアントにリアルタイムの更新を中継します。

問題は、次のコード スニペットをすべてのアクティビティ ページに追加すると、Pusher がページごとに新しい Web ソケットを開くことです。

プッシャーへの 1 つの接続を行って、それをすべてのアクティビティで使用するにはどうすればよいでしょうか?

String apiKey = "abcde";
        PusherOptions options = (new PusherOptions()).setEncrypted(false);
        Pusher ph = new Pusher(apiKey, options);
        ph.connect(new ConnectionEventListener() {
            @Override
            public void onConnectionStateChange(ConnectionStateChange change) {
                System.out.println("State changed to " + change.getCurrentState() +
                        " from " + change.getPreviousState());
            }

            @Override
            public void onError(String message, String code, Exception e) {
                System.out.println("There was a problem connecting!");
            }
        }, ConnectionState.ALL);

        if(pusher_channel != null){
            Channel channel = ph.subscribe(pusher_channel);

            // Bind to listen for events called "my-event" sent to "my-channel"
            channel.bind("user_is_typing", new SubscriptionEventListener() {
                @Override
                public void onEvent(String channel, String event, String data) {
                    //System.out.println("Received event with data: " + data);
                }
            });


        }
4

1 に答える 1

1

接続スクリプトを以下に配置することで、この問題を解決しました。

public class MyApplication extends MultiDexApplication

これで、アプリは 1 つの WebSocket のみを開きます。

于 2015-11-28T14:31:38.677 に答える