我正在与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循环。任何建议'专家'请..?
答案 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及其使用模式。