【问题标题】:how to check signalr hubconnection is online or not in android?如何在android中检查信号器集线器连接是否在线?
【发布时间】:2017-08-09 21:07:59
【问题描述】:

我正在使用 signalr 进行聊天 api,signalr 服务正在启动并在一段时间内获取聊天消息,但一段时间后,signalr hub 连接没有响应并且我无法与 signalR 服务器联系。如何在android中检查signalr hubconnection是否在线。

【问题讨论】:

    标签: android signalr signalr-hub


    【解决方案1】:

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

    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);
        }
    

    【讨论】:

    • 嗨,你可以分享图书馆吗?谢谢
    猜你喜欢
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多