Platform.loadPlatformComponent(new AndroidPlatformComponent()); HubConnection connection = new HubConnection("signalr_host"); HubProxy mainHubProxy = connection.createHubProxy("MainHub"); connection.stateChanged(new StateChangedCallback() { @Override public void stateChanged(ConnectionState connectionState, ConnectionState connectionState2) { Log.i("SignalR", connectionState.name() + "->" + connectionState2.name()); } }); connection.closed(new Runnable() { @Override public void run() { Log.i("SignalR", "Closed"); connectSignalr(); } }); private void connectSignalr() { try { SignalRConnectTask signalRConnectTask = new SignalRConnectTask(); signalRConnectTask.execute(connection); } catch (Exception ex) { ex.printStackTrace(); } } public class SignalRConnectTask extends AsyncTask { @Override protected Object doInBackground(Object[] objects) { HubConnection connection = (HubConnection) objects[0]; try { Thread.sleep(2000); connection.start().get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } return null; } } mainHubProxy.subscribe("newClient").addReceivedHandler(new Action<JsonElement[]>() { @Override public void run(JsonElement[] jsonElements) throws Exception { Log.i("SignalR", "Message From Server: " + jsonElements[0].getAsString()); } }); public class SignalRTestActionTask extends AsyncTask { @Override protected Object doInBackground(Object[] objects) { if (connection.getState() == ConnectionState.Connected) { Object param1 = objects[0]; Object param2 = objects[1]; try { mainHubProxy.invoke("TestMethod", param1, param2).get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } return null; } @Override protected void onPostExecute(Object o) { super.onPostExecute(o); } } new SignalRTestActionTask().execute(new Object(), new Object()); public class SignalRTestActionWithResultTask extends AsyncTask { @Override protected Object doInBackground(Object[] objects) { if (connection.getState() == ConnectionState.Connected) { Object result = null; Object param1 = objects[0]; Object param2 = objects[1]; try { result = mainHubProxy.invoke(Object.class, "TestMethod", param1, param2).get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } return result; } @Override protected void onPostExecute(Object o) { super.onPostExecute(o); // . } } new SignalRTestActionWithResultTask().execute(new Object(), new Object()); String result = mainHubProxy.invoke(String.class, "TestMethod", param1, param2).get(); String[] result = mainHubProxy.invoke(String[].class, "TestMethod", param1, param2).get(); List<String> strings = Arrays.asList(result); Source: https://habr.com/ru/post/301752/
All Articles