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);
}
我正在使用 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);
}