Android -高速公路web套接字通信



我正在与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循环。"专家们"有什么建议吗?

我不知道你正在处理的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和它的使用模式。

相关内容

  • 没有找到相关文章

最新更新