我正在与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和它的使用模式。