Клиент Android не получает данные, а клиент.net получает данные с сервера SignalR
Извиняюсь за длинный вопрос! Я новичок в SignalR. Пожалуйста, помогите мне решить мою проблему. У меня есть сервер SignalR в сети, я получаю данные с сайта клиента.net, но не могу получить данные со стороны моего клиента Android. Когда мой отладчик прибыл в "hub.invoke", это просто остановка. Я устал от разных кодов, но безуспешно.
Если я не могу сделать выше, то я хочу сделать это на моем локальном сервере у меня дома. У меня два ноутбука, один работает под управлением Win7, другой - под управлением Win8. Я хочу сохранить сервер signalR в одном из них и доступ с другого. Как я могу это сделать? о каком API сервера SignalR я напишу? Ребята, пожалуйста, помогите мне сделать шаг?
ниже мой связанный код
String android_id = Settings.Secure.getString(arg0.getContext().getContentResolver(), Settings.Secure.ANDROID_ID);
HubConnection con = new HubConnection(Uri.parse("http://10.198.40.32:8090/login/").toString());
HubProxy hub = con.createHubProxy("NotificationHub");
con.start();
try {
hub.invoke( "userID", "password", android_id).get();
} catch (InterruptedException e) {
// Handle ...
System.out.print(e);
} catch (ExecutionException e) {
// Handle ...
System.out.print(e);
}
1 ответ
Вы можете сослаться на мой рабочий пример кода следующим образом. Затем вы можете заменить Object.class своим собственным классом:
public <T> void startSignalR(String transport, String serverUrl, final String userName, final Class<T> tClass) {
Platform.loadPlatformComponent(new AndroidPlatformComponent());
Credentials credentials = new Credentials() {
@Override
public void prepareRequest(Request request) {
request.addHeader(HEADER_KEY_USERNAME, userName);
}
};
mConnection = new HubConnection(serverUrl);
mConnection.setCredentials(credentials);
mHub = mConnection.createHubProxy(SERVER_HUB_CHAT);
if (transport.equals("ServerSentEvents")) {
mTransport = new ServerSentEventsTransport(mConnection.getLogger());
} else if (transport.equals("LongPolling")) {
mTransport = new LongPollingTransport(mConnection.getLogger());
}
mAwaitConnection = mConnection.start(mTransport);
try {
mAwaitConnection.get();
} catch (InterruptedException e) {
e.printStackTrace();
return;
} catch (ExecutionException e) {
e.printStackTrace();
return;
}
mHub.on("broadcastMessage",
new SubscriptionHandler1<Object>() {
@Override
public void run(final Object msg) {
final String finalMsg;
Gson gson = new Gson();
Object object = gson.fromJson(msg.toString(), tClass);
Field[] fields = object.getClass().getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
try {
System.out.println("Value = " + fields[i].get(object));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
, Object.class);
...
}
Полный исходный код SignalR для Android/Java вы можете найти здесь на GitHub
Надеюсь это поможет!