diff --git a/pom.xml b/pom.xml index 06a886c..9ae2806 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ org.json json - 20140107 + 20090211 org.java-websocket diff --git a/src/main/java/com/github/nkzawa/engineio/client/HandshakeData.java b/src/main/java/com/github/nkzawa/engineio/client/HandshakeData.java index 8c80aff..4cb9f57 100644 --- a/src/main/java/com/github/nkzawa/engineio/client/HandshakeData.java +++ b/src/main/java/com/github/nkzawa/engineio/client/HandshakeData.java @@ -2,6 +2,7 @@ package com.github.nkzawa.engineio.client; import org.json.JSONArray; +import org.json.JSONException; import org.json.JSONObject; public class HandshakeData { @@ -11,7 +12,11 @@ public class HandshakeData { public long pingInterval; public long pingTimeout; - /*package*/ HandshakeData(JSONObject data) { + /*package*/ HandshakeData(String data) throws JSONException { + this(new JSONObject(data)); + } + + /*package*/ HandshakeData(JSONObject data) throws JSONException { JSONArray upgrades = data.getJSONArray("upgrades"); int length = upgrades.length(); String[] _upgrades = new String[length]; diff --git a/src/main/java/com/github/nkzawa/engineio/client/Socket.java b/src/main/java/com/github/nkzawa/engineio/client/Socket.java index 77828fb..a706ecf 100644 --- a/src/main/java/com/github/nkzawa/engineio/client/Socket.java +++ b/src/main/java/com/github/nkzawa/engineio/client/Socket.java @@ -8,12 +8,15 @@ import com.github.nkzawa.engineio.parser.Packet; import com.github.nkzawa.engineio.parser.Parser; import com.github.nkzawa.parseqs.ParseQS; import com.github.nkzawa.thread.EventThread; -import org.json.JSONObject; +import org.json.JSONException; import java.net.URI; import java.net.URISyntaxException; import java.util.*; -import java.util.concurrent.*; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; @@ -434,7 +437,11 @@ public class Socket extends Emitter { this.emit(EVENT_HEARTBEAT); if (Packet.OPEN.equals(packet.type)) { - this.onHandshake(new HandshakeData(new JSONObject((String)packet.data))); + try { + this.onHandshake(new HandshakeData((String)packet.data)); + } catch (JSONException e) { + this.emit(EVENT_ERROR, new EngineIOException(e)); + } } else if (Packet.PONG.equals(packet.type)) { this.setPing(); } else if (Packet.ERROR.equals(packet.type)) {