2013-06-21 3 views
0

나는 아우토반 라이브러리와 웹 소켓 통신을하고있다. 서버 연결 후 문제가 발생했습니다. 다시 연결하지 않고 메시지를 보내야합니다. 그러나 메시지는 메시지를 보내기 위해 매번 서버에 연결되는 다른 연결로 전송됩니다. 안드로이드 - 아우토반 웹 소켓 통신

public class WebSocket_Connector extends Activity{ 

private static final String TAG = "ECHOCLIENT"; 
private static final String TAG1 = "My app"; 
public final WebSocketConnection mConnection = new WebSocketConnection(); 
private String tmpString = ""; 

public void connect(final String wsuri) { 
Log.d(TAG, "Connecting to: " + wsuri); 
    try { 
     mConnection.connect(wsuri, new WebSocketHandler() { 
     @Override 
      public void onOpen() { 
      Log.d(TAG, "Status: Connected to " + wsuri); 
      Log.d(TAG, "Connection successful!\n"); 
      mConnection.sendTextMessage(tmpString); 
      tmpString = ""; 
      } 

      @Override 
      public void onTextMessage(String payload) { 
      Log.d(TAG, "Got echo: " + payload); 
      } 

      @Override 
      public void onClose(int code, String reason) { 
      Log.d(TAG, "Connection closed."); 
      } 
      }); 
     } catch (WebSocketException e) {  
      Log.d(TAG, e.toString()); 
      } 
    } 

public void sendMessage(String message) { 
    if (mConnection.isConnected()) { 
     Log.d(TAG1, "Messeage is sent : " + message); 
     mConnection.sendTextMessage(message); 
     } 
    else { 
     tmpString = message; 
     connect("ws://192.168.3.100:7681"); 
     } 
    } 
} 

는 "sendMessage 첨부"방법을 볼 때 루프 경우, 항상 '다른'하지 간다 ... 내가 가지고있는 번호 및. 어떤 제안 '전문가'제발 ..?

+0

저는 아우토반도 사용하고 있습니다. 매번 ws.isConnected()를 확인하지는 않지만 throw 된 예외 및 오류 메시지가 있는지 확인하고 올바르게 작동합니다. – damian

+0

@damian 그렇다면 상태가있는 예외를 어떻게 확인할 수 있습니까? – user2500696

답변

0

나는 websocket에 대해 다루고있는 패키지 이름을 모른다. 먼저 질문에 대한 신뢰할 수있는 대답을 얻으려면 먼저 제공해야합니다. 그러나 그것이 비슷한 것 인 경우에 말하십시오 : https://code.google.com/p/weberknecht/source/browse/trunk/src/main/de/roderick/weberknecht/WebSocketConnection.java?r=2 주 : 나는 isConnected() 방법을 보지 않으며 그러나 그것이 다른 곳에서 추가된다고 추정한다.

원본에서 connected = true 이전에 onOpen() (줄 88)이 호출 된 것을 소스에서 볼 수 있습니다. 온라인 (91). 이 멤버 var가 isConnected()의 결과로 사용될 경우 코드는 항상 조건의 "else"부분을 따릅니다.

나는 websocket API와 그 사용 패턴을 더 자세히 파고 싶습니다.

+0

패키지 이름은 http://autobahn.ws/static/reference/android/_web_socket_connection_8java_source.html – user2500696

+0

입니다. asynch 작업을 실행하는 방법을 확인하십시오. http://developer.android.com/reference/android/os/AsyncTask.html 구체적으로 : 일단 작업이 생성되면 매우 간단하게 실행됩니다 : new DownloadFilesTask(). execute (url1, url2, url3); –