0

我正在与 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 循环。请任何建议“专家”..?

4

1 回答 1

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 及其使用模式。

于 2013-06-21T13:09:10.170 回答