2015-05-27 12 views
9

Próbuję utworzyć aplikację na Androida, która będzie mogła łączyć się z moim podstawowym koncentratorem SignalR Hub.Sygnał R Oryginalna aplikacja na Androida nie powiodła się Negocjacja

To tylko podstawowy plik Hub, który chcę przetestować, ale do tej pory nie miałem szczęścia. Czy ktoś może rzucić okiem na rzeczy, które robię źle? Za każdym razem, gdy próbuję uruchomić go otrzymuję następujący stackraces:

05-27 09:10:39.785 22247-22247/nl.vict.chatapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<microsoft.aspnet.signalr.client.transport.WebsocketTransport$1> 
05-27 09:10:39.785 22247-22247/nl.vict.chatapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<microsoft.aspnet.signalr.client.transport.WebsocketTransport$1> 
05-27 09:10:39.829 22247-22266/nl.vict.chatapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<microsoft.aspnet.signalr.client.transport.WebsocketTransport$1> 
05-27 09:10:39.830 22247-22247/nl.vict.chatapp W/System.err﹕ java.util.concurrent.ExecutionException: microsoft.aspnet.signalr.client.transport.NegotiationException: There was a problem in the negotiation with the server 
05-27 09:10:39.830 22247-22247/nl.vict.chatapp W/System.err﹕ at microsoft.aspnet.signalr.client.SignalRFuture.get(SignalRFuture.java:112) 
05-27 09:10:39.830 22247-22247/nl.vict.chatapp W/System.err﹕ at microsoft.aspnet.signalr.client.SignalRFuture.get(SignalRFuture.java:102) 
05-27 09:10:39.830 22247-22247/nl.vict.chatapp W/System.err﹕ at nl.vict.chatapp.MainActivity.onCreate(MainActivity.java:48) 
05-27 09:10:39.831 22247-22247/nl.vict.chatapp W/System.err﹕ at android.app.Activity.performCreate(Activity.java:5937) 
05-27 09:10:39.831 22247-22247/nl.vict.chatapp W/System.err﹕ at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
05-27 09:10:39.832 22247-22247/nl.vict.chatapp W/System.err﹕ at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
05-27 09:10:39.832 22247-22247/nl.vict.chatapp W/System.err﹕ at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
05-27 09:10:39.832 22247-22247/nl.vict.chatapp W/System.err﹕ at android.app.ActivityThread.access$800(ActivityThread.java:144) 
05-27 09:10:39.833 22247-22247/nl.vict.chatapp W/System.err﹕ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
05-27 09:10:39.833 22247-22247/nl.vict.chatapp W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:102) 
05-27 09:10:39.833 22247-22247/nl.vict.chatapp W/System.err﹕ at android.os.Looper.loop(Looper.java:135) 
05-27 09:10:39.833 22247-22247/nl.vict.chatapp W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5221) 
05-27 09:10:39.834 22247-22247/nl.vict.chatapp W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method) 
05-27 09:10:39.834 22247-22247/nl.vict.chatapp W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372) 
05-27 09:10:39.855 22247-22247/nl.vict.chatapp W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
05-27 09:10:39.855 22247-22247/nl.vict.chatapp W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
05-27 09:10:39.855 22247-22247/nl.vict.chatapp W/System.err﹕ Caused by: microsoft.aspnet.signalr.client.transport.NegotiationException: There was a problem in the negotiation with the server 
05-27 09:10:39.855 22247-22247/nl.vict.chatapp W/System.err﹕ at microsoft.aspnet.signalr.client.transport.HttpClientTransport$1.onResponse(HttpClientTransport.java:86) 
05-27 09:10:39.855 22247-22247/nl.vict.chatapp W/System.err﹕ at microsoft.aspnet.signalr.client.http.java.NetworkRunnable.run(NetworkRunnable.java:82) 
05-27 09:10:39.855 22247-22247/nl.vict.chatapp W/System.err﹕ at java.lang.Thread.run(Thread.java:818) 
05-27 09:10:39.855 22247-22247/nl.vict.chatapp W/System.err﹕ Caused by: java.lang.NoClassDefFoundError: microsoft.aspnet.signalr.client.transport.WebsocketTransport$1 
05-27 09:10:39.855 22247-22247/nl.vict.chatapp W/System.err﹕ at microsoft.aspnet.signalr.client.transport.WebsocketTransport.start(WebsocketTransport.java:92) 
05-27 09:10:39.855 22247-22247/nl.vict.chatapp W/System.err﹕ at microsoft.aspnet.signalr.client.transport.AutomaticTransport.resolveTransport(AutomaticTransport.java:89) 
05-27 09:10:39.855 22247-22247/nl.vict.chatapp W/System.err﹕ at microsoft.aspnet.signalr.client.transport.AutomaticTransport.start(AutomaticTransport.java:143) 
05-27 09:10:39.855 22247-22247/nl.vict.chatapp W/System.err﹕ at microsoft.aspnet.signalr.client.Connection.startTransport(Connection.java:673) 
05-27 09:10:39.855 22247-22247/nl.vict.chatapp W/System.err﹕ at microsoft.aspnet.signalr.client.Connection.access$500(Connection.java:30) 
05-27 09:10:39.855 22247-22247/nl.vict.chatapp W/System.err﹕ at microsoft.aspnet.signalr.client.Connection$3.run(Connection.java:373) 
05-27 09:10:39.855 22247-22247/nl.vict.chatapp W/System.err﹕ at microsoft.aspnet.signalr.client.Connection$3.run(Connection.java:350) 
05-27 09:10:39.855 22247-22247/nl.vict.chatapp W/System.err﹕ at microsoft.aspnet.signalr.client.SignalRFuture.setResult(SignalRFuture.java:73) 
05-27 09:10:39.856 22247-22247/nl.vict.chatapp W/System.err﹕ at microsoft.aspnet.signalr.client.transport.HttpClientTransport$1.onResponse(HttpClientTransport.java:82) 
05-27 09:10:39.856 22247-22247/nl.vict.chatapp W/System.err﹕ ... 2 more 

Oto mój kod:

Hub:

public class ChatHub : Hub 
    { 
     public void Send(string name, string message) 
     { 
      Clients.All.addNewMessageToPage(name, message); 
     } 
    } 

Main Activity (Android Studio)

ListView listView; 
    HubConnection connection; 
    HubProxy proxy; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     listView = (ListView)findViewById(R.id.listView); 

     String[] values = new String[]{ 
       "Testvalue1", 
       "Testvalue2", 
       "Testvalue3" 
     }; 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,android.R.id.text1,values); 

     listView.setAdapter(adapter); 

     connection = new HubConnection("http://www.voffice.nl/chat"); 
     proxy = connection.createHubProxy("chatHub"); 
     SignalRFuture<Void> awaitConnection = connection.start(); 
     try{ 
      awaitConnection.get(); 
     }catch (InterruptedException e){ 
      e.printStackTrace(); 
     }catch (ExecutionException e){ 
      e.printStackTrace(); 
     } 



    } 

Z góry dzięki,

Kevin

-

EDIT:

Sprawdziłem serwer i WebSockets są włączone.

+0

Znalazłeś rozwiązanie problemu Mam podobny (lub taki sam) jeden http: // stackoverflow.com/questions/30646442/signr-android-access-localhost –

Odpowiedz

2

Oto jak mam to działać po kilku dniach walki:

  1. Pobierz https://github.com/TooTallNate/Java-WebSocket i zbudować.

  2. Pobierz https://github.com/SignalR/java-client,

  3. dodać do folderu libs signalr-client-sdk i umieścić java_websocket.jar że wybudowany wcześniej
  4. Wymienić w signalr-client-SDK/build.gradle

    compile 'org.java-websocket:java-websocket:1.3.1'

    z:

    compile files('libs/java_websocket.jar')

  5. Przejdź tutaj i znaleźć rozwiązać na http: // WS: // url https://github.com/SignalR/java-client/issues/63, zmienić go w kodzie

  6. Budowa signalr klient i umieścić go w swoim projekcie, trzeba także zawierać java_websocket.jar że zbudowaliście w pierwszym etapie, dzięki czemu plik Gradle witll wyglądać następująco:

    compile 'client.signalr.aspnet.microsoft.signalr_client_sdk_android:signalr-client-sdk-android-release:[email protected]' compile files('libs/signalr-client-sdk.jar') compile files('libs/java_websocket.jar')

nie przechodzą żadnych ciągu kwerendy do HubConnection lub jej powiesi się !!

Jeśli trzeba przejść nagłówki (jak dowód autoryzacji) trzeba naprawić trochę więcej kodu, jest prośba przyciąganie do tego: https://github.com/SignalR/java-client/pull/64

+0

czy możesz wyjaśnić, dlaczego zastąpiłeś implementację websocków tą z TooTallNate? czy możesz również powiedzieć, czy osiągnąłeś akceptowalną (tj. gotową do produkcji), stabilną implementację w systemie Android? – wal

Powiązane problemy