handle error using onError

This commit is contained in:
Yu-Hsuan Lin
2015-04-13 01:11:35 +08:00
parent d86f51fda0
commit b3586bb0b1

View File

@@ -6,6 +6,7 @@ import com.github.nkzawa.engineio.parser.Packet;
import com.github.nkzawa.engineio.parser.Parser; import com.github.nkzawa.engineio.parser.Parser;
import com.github.nkzawa.parseqs.ParseQS; import com.github.nkzawa.parseqs.ParseQS;
import com.github.nkzawa.thread.EventThread; import com.github.nkzawa.thread.EventThread;
import com.squareup.okhttp.Headers;
import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request; import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response; import com.squareup.okhttp.Response;
@@ -59,8 +60,9 @@ public class WebSocket extends Transport {
public void onOpen(com.squareup.okhttp.ws.WebSocket webSocket, Request request, Response response) throws IOException { public void onOpen(com.squareup.okhttp.ws.WebSocket webSocket, Request request, Response response) throws IOException {
ws = webSocket; ws = webSocket;
final Map<String, String> headers = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER); final Map<String, String> headers = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
for (int i = 0, size = response.headers().size(); i < size; i++) { Headers responseHeaders = response.headers();
headers.put(response.headers().name(i), response.headers().value(i)); for (int i = 0, size = responseHeaders.size(); i < size; i++) {
headers.put(responseHeaders.name(i), responseHeaders.value(i));
} }
EventThread.exec(new Runnable() { EventThread.exec(new Runnable() {
@Override @Override
@@ -72,8 +74,8 @@ public class WebSocket extends Transport {
} }
@Override @Override
public void onMessage(BufferedSource payload, PayloadType type) throws IOException { public void onMessage(BufferedSource payload, final PayloadType type) throws IOException {
Object data; Object data = null;
switch (type) { switch (type) {
case TEXT: case TEXT:
data = payload.readUtf8(); data = payload.readUtf8();
@@ -82,7 +84,12 @@ public class WebSocket extends Transport {
data = payload.readByteArray(); data = payload.readByteArray();
break; break;
default: default:
throw new IllegalStateException("Unknown payload type: " + type); EventThread.exec(new Runnable() {
@Override
public void run() {
self.onError("Unknown payload type: " + type, new IllegalStateException());
}
});
} }
payload.close(); payload.close();
final Object finalData = data; final Object finalData = data;
@@ -143,7 +150,7 @@ public class WebSocket extends Transport {
self.ws.sendMessage(BINARY, new Buffer().write((byte[]) packet)); self.ws.sendMessage(BINARY, new Buffer().write((byte[]) packet));
} }
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); self.onError("websocket error", e);
} }
} }
}); });
@@ -172,7 +179,7 @@ public class WebSocket extends Transport {
try { try {
this.ws.close(1000, ""); this.ws.close(1000, "");
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); onError("doClose error", e);
} }
} }
} }