2014-09-12 4 views
11

Ich entwickle einen Android-Client für einen Server, bei dem der kontinuierliche Austausch von Audiostreams zum WebSockets-basierten Server erforderlich ist.Web Socket-Verbindung fehlgeschlagen von Android-Client

Während der Verbindung mit Web-Sockets wirft der Android-Client den folgenden Fehler.

geschlossen Entwurf [email protected] weigert Handshake

Aber ich habe versucht mit Web-Buchse uri folgen. Verbindung wird erfolgreich hergestellt. ws: //echo.websocket.org

-Code:

URI uri; 
    try { 
     // uri = new URI(
     // "ws://echo.websocket.org"); 
     uri = new URI(
       "ws://serverIP:9090/WebRtc/serverendpoint"); 

    } catch (URISyntaxException e) { 
     e.printStackTrace(); 
     return; 
    } 

    mWebSocketClient = new WebSocketClient(uri) { 
     @Override 
     public void onOpen(ServerHandshake serverHandshake) { 
      Log.i("Websocket", "Opened"); 
      mWebSocketClient.send("Hello from " + Build.MANUFACTURER + " " 
        + Build.MODEL); 
     } 

     @Override 
     public void onMessage(String s) { 
      final String message = s; 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        TextView textView = (TextView) findViewById(R.id.messages); 
        textView.setText(textView.getText() + "\n" + message); 
       } 
      }); 
     } 

     @Override 
     public void onClose(int i, String s, boolean b) { 
      Log.i("Websocket", "Closed " + s); 
     } 

     @Override 
     public void onError(Exception e) { 
      Log.i("Websocket", "Error " + e.getMessage()); 
     } 
    }; 
    mWebSocketClient.connect(); 

habe ich versucht, den Echo-Test von Browser für den Web-Buchse (ws: // serverIP: 9090/WebRTC/serverendpoint) habe ich benutzt. Es wird richtig verbunden. Aber wenn ich das sowohl von Mobile oder Emulator versuche, nichts funktioniert.

Bitte helfen Sie mir dabei.

+0

Können Sie mir bitte sagen, was für Sie gearbeitet hat. Ich bekomme das gleiche Problem –

Antwort

2

Ich habe das Problem mit diesem gefunden.

Eigentlich das Problem mit der Java-bereitgestellten Web-Socket-JAR-Datei.

dass statt Ich habe die Autobahn (Android Spezifisch WebSocket Open Source https://github.com/tavendo/AutobahnAndroid) verwendet.

Jetzt kann ich mit dem Web-Socket-Server verbinden.

+0

ja das gleiche hier: Ich habe versucht, org.java-websocket zu verwenden: Java-WebSocket: 1.3.0, aber dieser Socket kann nicht mit Java EE-Server-Endpunkten kommunizieren – Aitch

+0

Versuchen Sie mit Autobahn .... –

+0

Nun, tue ich :) Es klappt. – Aitch

14

Ich habe gerade eine andere einfache Möglichkeit gefunden, dieses Problem loszuwerden.

ändern folgende Zeile

mWebSocketClient = new WebSocketClient(uri){ 

zu

mWebSocketClient = new WebSocketClient(uri, new Draft_17()){ 

fand ich den Hinweis in meinem Serverlogs die sagte:

User Agent: [ungesetzt] angefordert WebSocket-Version [8] , Jetty unterstützt Version: [13]

Wie Sie im folgenden Link sehen können, ist Version 8 Draft_10, Version 13 ist Draft_17.

Link to supported Websocket-Versions

+0

Sie sind erstaunlich, danke! –

+0

Ich bin mit dem gleichen Problem konfrontiert ... aber Ihre Lösung funktioniert nicht für mich –

+0

@JayVyas Ist Ihre Logcat-Ausgabe die gleiche? – AlbAtNf

Verwandte Themen