Android - 高速公路网络套接字通信

时间:2013-06-21 12:54:39

标签: android websocket if-statement autobahn

我正在与Autobahn库进行Web套接字通信。 我遇到的问题是在连接服务器之后,应该再次发送消息而不再连接。但是消息是通过不同的连接发送的,它每次都连接到服务器以发送消息。

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”方法时,它总是转到'else'而不是if循环。任何建议'专家'请..?

1 个答案:

答案 0 :(得分:0)

我不知道你为websocket处理的包名。因此,首先必须提供以获得可靠的答案。但是,如果它类似于: https://code.google.com/p/weberknecht/source/browse/trunk/src/main/de/roderick/weberknecht/WebSocketConnection.java?r=2 注意:我没有看到isConnected()方法,但是假设它被添加到其他地方。

你可以从源头看到onOpen()(第88行)在connected = true之前被调用;在线(91)。如果这个成员var将被用作isConnected()的结果,那么你的代码总是会跟随条件的“else”部分。

我建议深入挖掘websocket api及其使用模式。