【发布时间】:2017-08-09 21:07:59
【问题描述】:
我正在使用 signalr 进行聊天 api,signalr 服务正在启动并在一段时间内获取聊天消息,但一段时间后,signalr hub 连接没有响应并且我无法与 signalR 服务器联系。如何在android中检查signalr hubconnection是否在线。
【问题讨论】:
标签: android signalr signalr-hub
我正在使用 signalr 进行聊天 api,signalr 服务正在启动并在一段时间内获取聊天消息,但一段时间后,signalr hub 连接没有响应并且我无法与 signalR 服务器联系。如何在android中检查signalr hubconnection是否在线。
【问题讨论】:
标签: android signalr signalr-hub
当你调用这个方法而不是通过这个实例时,你可以获得集线器连接的当前状态。
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);
}
【讨论】: