android 如何检查 signalr hubconnection 是否在线?

how to check signalr hubconnection is online or not in android?

我正在使用 signalr 进行聊天 api,signalr 服务正在启动并在一段时间内收到聊天消息,但是一段时间后 signalr 集线器连接没有响应,我无法与 signalR 服务器联系。如何在 android.

中检查 signalr hubconnection 是否在线

当您调用此方法而不是通过此实例时,您可以获得集线器连接的当前状态。

private void startSignalR() {
        Platform.loadPlatformComponent(new AndroidPlatformComponent());
        mInstance.setmHubConnection(getApplicationContext());
        mInstance.setHubProxy();
        ClientTransport clientTransport = new ServerSentEventsTransport(mInstance.mHubConnection.getLogger());
        signalRFuture = mInstance.mHubConnection.start(clientTransport);
        try {
            signalRFuture.get();
        } catch (InterruptedException | ExecutionException e) {
            SharedPrefUtil.clearAllSharedPreferences(getApplicationContext());
            Toast.makeText(getApplicationContext(), getString(R.string.wrong_server), Toast.LENGTH_LONG).show();
            Log.e("SimpleSignalR", e.toString());
            return;
        }

        mInstance.mHubConnection.error(new ErrorCallback() {

            @Override
            public void onError(Throwable error) {
                error.printStackTrace();
            }
        });

        // Subscribe to the connected event
        mInstance.mHubConnection.connected(new Runnable() {

            @Override
            public void run() {
                System.out.println("CONNECTED");
            }
        });

        mInstance.mHubConnection.reconnected(new Runnable() {

            @Override
            public void run() {

                System.out.println("RECONNECTED");
            }
        });
        // Subscribe to the closed event
        mInstance.mHubConnection.closed(new Runnable() {

            @Override
            public void run() {

                System.out.println("DISCONNECTED");
            }
        });

        mInstance.mHubProxy.on(SignalRConstant.CLIENT_METHOD_BROADAST_MESSAGE,
                new SubscriptionHandler2<String, Object>() {
                    @Override
                    public void run(final String msg, final Object data) {
                        if (msg != null && data != null && !data.equals("")) {
                            Intent intent = new Intent();
                            intent.setAction(MY_ACTION);
                            intent.putExtra("CAPTION", msg);
                            if(msg.equals(SignalRConstant.CAPTION_LOGINPASS))
                            {
                                Gson gson = new GsonBuilder().setDateFormat(AppConstant.DATE_FORMAT).create();
                                intent.putExtra("DATA", gson.toJson(data));
                            }else{
                                intent.putExtra("DATA", data.toString());
                            }
                            sendBroadcast(intent);
                        }
                    }
                }
                , String.class, Object.class);
    }