0
我正在使用signalr進行聊天api,signalr服務正在啓動並獲取一段時間的聊天消息,但經過一段時間後,信號中心連接沒有響應,我無法與signalR服務器聯繫。如何檢查signalr hubconnection是否在線或不在android。如何檢查信號器hubconnection是否在線或不在android?
我正在使用signalr進行聊天api,signalr服務正在啓動並獲取一段時間的聊天消息,但經過一段時間後,信號中心連接沒有響應,我無法與signalR服務器聯繫。如何檢查signalr hubconnection是否在線或不在android。如何檢查信號器hubconnection是否在線或不在android?
試試這個方法
public static boolean isInternetOn(Context context) {
ConnectivityManager connec = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED ||
connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED
|| mWifi.isConnectedOrConnecting()) {
return true;
} else if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED ||
connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED ||
mWifi.getState() == NetworkInfo.State.DISCONNECTED) {
return false;
}
return false;
}
,當你調用此方法比這種情況下,你可以得到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);
}
它用於檢查互聯網連接,我要求signalr hubconnection – Hari