diff --git a/pom.xml b/pom.xml index ba45136..1ff5b1a 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,7 @@ com.squareup.okhttp okhttp-ws - 2.5.0 + 2.7.0 org.json diff --git a/src/main/java/io/socket/engineio/client/transports/WebSocket.java b/src/main/java/io/socket/engineio/client/transports/WebSocket.java index f5c21dc..9f58986 100644 --- a/src/main/java/io/socket/engineio/client/transports/WebSocket.java +++ b/src/main/java/io/socket/engineio/client/transports/WebSocket.java @@ -1,29 +1,35 @@ package io.socket.engineio.client.transports; +import com.squareup.okhttp.OkHttpClient; +import com.squareup.okhttp.Request; +import com.squareup.okhttp.RequestBody; +import com.squareup.okhttp.Response; +import com.squareup.okhttp.ResponseBody; +import com.squareup.okhttp.ws.WebSocketCall; +import com.squareup.okhttp.ws.WebSocketListener; + +import java.io.IOException; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; +import java.util.concurrent.TimeUnit; +import java.util.logging.Logger; + +import javax.net.ssl.SSLSocketFactory; + import io.socket.engineio.client.Transport; import io.socket.engineio.parser.Packet; import io.socket.engineio.parser.Parser; import io.socket.parseqs.ParseQS; import io.socket.thread.EventThread; -import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; -import com.squareup.okhttp.ws.WebSocket.PayloadType; -import com.squareup.okhttp.ws.WebSocketCall; -import com.squareup.okhttp.ws.WebSocketListener; import io.socket.utf8.UTF8Exception; import okio.Buffer; -import okio.BufferedSource; -import javax.net.ssl.SSLSocketFactory; -import java.io.IOException; -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; - -import static com.squareup.okhttp.ws.WebSocket.PayloadType.BINARY; -import static com.squareup.okhttp.ws.WebSocket.PayloadType.TEXT; +import static com.squareup.okhttp.ws.WebSocket.BINARY; +import static com.squareup.okhttp.ws.WebSocket.TEXT; public class WebSocket extends Transport { @@ -81,24 +87,21 @@ public class WebSocket extends Transport { } @Override - public void onMessage(BufferedSource payload, final PayloadType type) throws IOException { + public void onMessage(final ResponseBody responseBody) throws IOException { Object data = null; - switch (type) { - case TEXT: - data = payload.readUtf8(); - break; - case BINARY: - data = payload.readByteArray(); - break; - default: - EventThread.exec(new Runnable() { - @Override - public void run() { - self.onError("Unknown payload type: " + type, new IllegalStateException()); - } - }); + if (responseBody.contentType() == TEXT) { + data = responseBody.string(); + } else if (responseBody.contentType() == BINARY) { + data = responseBody.source().readByteArray(); + } else { + EventThread.exec(new Runnable() { + @Override + public void run() { + self.onError("Unknown payload type: " + responseBody.contentType(), new IllegalStateException()); + } + }); } - payload.close(); + responseBody.source().close(); final Object finalData = data; EventThread.exec(new Runnable() { @Override @@ -152,9 +155,9 @@ public class WebSocket extends Transport { public void call(Object packet) { try { if (packet instanceof String) { - self.ws.sendMessage(TEXT, new Buffer().writeUtf8((String) packet)); + self.ws.sendMessage(RequestBody.create(TEXT, (String) packet)); } else if (packet instanceof byte[]) { - self.ws.sendMessage(BINARY, new Buffer().write((byte[]) packet)); + self.ws.sendMessage(RequestBody.create(BINARY, (byte[]) packet)); } } catch (IOException e) { logger.fine("websocket closed before onclose event");