2014-09-12 18 views
11

Sto sviluppando un client Android per un server in cui il requisito è lo scambio continuo di flusso audio al server basato su WebSockets.Connessione socket Web non riuscita dal client Android

Durante la connessione con i socket Web, il client Android genera il seguente errore.

Closed progetto [email protected] rifiuta stretta di mano

ma ho provato con i seguenti WebSocket uri. Connessione riuscita. ws: //echo.websocket.org

Codice:

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(); 

ho provato il test eco dal browser per il socket Web (WS: // serverIP: 9090/WebRTC/serverendpoint) che ho usato. Si sta connettendo correttamente. Ma quando provo sia dal cellulare che dall'emulatore, niente funziona.

Per favore aiutatemi su questo.

+0

Per favore, dimmi cosa ha funzionato per te. Sto ottenendo lo stesso numero –

risposta

2

Ho trovato il problema con questo.

In realtà il problema con il file jar di socket web fornito da Java.

Invece di che ho usato il Autobahn (Android Web specifico Socket Open Source https://github.com/tavendo/AutobahnAndroid).

Ora sono in grado di connettersi con il server socket Web.

+0

sì stesso qui: ho provato a utilizzare org.java-websocket: Java-WebSocket: 1.3.0 ma quel socket non è in grado di comunicare con gli endpoint del server Java EE – Aitch

+0

Provare ad usare l'autostrada .... –

+0

Bene, lo faccio :) Funziona. – Aitch

14

Ho appena trovato un altro modo semplice per sbarazzarsi di questo problema.

Change seguente riga

mWebSocketClient = new WebSocketClient(uri){ 

a

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

ho trovato il suggerimento nei miei Serverlogs che diceva:

User Agent: [unset] richiesto versione WebSocket [8] , Jetty supporta la versione: [13]

Come si può vedere nel link sottostante, la Versione 8 è Draft_10, Versione 13 è Draft_17.

Link to supported Websocket-Versions

+0

Sei fantastico grazie !!! –

+0

Sto affrontando lo stesso problema ... ma la tua soluzione non funziona per me –

+0

@JayVyas Il tuo output Logcat è lo stesso? – AlbAtNf

Problemi correlati