diff --git a/.classpath b/.classpath
index 57f12cc..3ec365a 100644
--- a/.classpath
+++ b/.classpath
@@ -5,7 +5,7 @@
-
-
+
+
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..8328fb1
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "libs/Java-WebSocket"]
+ path = libs/Java-WebSocket
+ url = https://github.com/TooTallNate/Java-WebSocket
diff --git a/build.xml b/build.xml
index afa2eb6..810e814 100644
--- a/build.xml
+++ b/build.xml
@@ -18,7 +18,7 @@
-
+
diff --git a/libs/Java-WebSocket b/libs/Java-WebSocket
new file mode 160000
index 0000000..05d2e2e
--- /dev/null
+++ b/libs/Java-WebSocket
@@ -0,0 +1 @@
+Subproject commit 05d2e2ed045d955947d944d7111ce3e6758843b6
diff --git a/libs/Java-WebSocket-1.3.1-SNAPSHOT.jar b/libs/Java-WebSocket-1.3.1-SNAPSHOT.jar
new file mode 100644
index 0000000..ca13a8f
Binary files /dev/null and b/libs/Java-WebSocket-1.3.1-SNAPSHOT.jar differ
diff --git a/libs/WebSocket.jar b/libs/WebSocket.jar
deleted file mode 100644
index ef36379..0000000
Binary files a/libs/WebSocket.jar and /dev/null differ
diff --git a/src/io/socket/IOConnection.java b/src/io/socket/IOConnection.java
index 0febf78..7393fd0 100644
--- a/src/io/socket/IOConnection.java
+++ b/src/io/socket/IOConnection.java
@@ -25,9 +25,9 @@
import java.util.TimerTask;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.logging.Logger;
+
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSocketFactory;
import org.json.JSONArray;
import org.json.JSONException;
@@ -296,6 +296,9 @@ private void handshake() {
try {
setState(STATE_HANDSHAKE);
url = new URL(IOConnection.this.url.toString() + SOCKET_IO_1);
+
+ logger.info("Handshake > " + url);
+
connection = url.openConnection();
if (connection instanceof HttpsURLConnection) {
((HttpsURLConnection) connection)
@@ -314,6 +317,8 @@ private void handshake() {
Scanner in = new Scanner(stream);
response = in.nextLine();
String[] data = response.split(":");
+ logger.info("Handshake < " + Arrays.asList(data));
+
sessionId = data[0];
heartbeatTimeout = Long.parseLong(data[1]) * 1000;
closingTimeout = Long.parseLong(data[2]) * 1000;
@@ -339,6 +344,9 @@ else if (protocols.contains(XhrTransport.TRANSPORT_NAME))
"Server supports no available transports. You should reconfigure the server to support a available transport"));
return;
}
+
+ logger.info("Connecting via " + transport);
+
transport.connect();
}
@@ -568,6 +576,7 @@ public void transportDisconnected() {
*/
public void transportError(Exception error) {
this.lastException = error;
+ logger.warning("Error: " + error);
setState(STATE_INTERRUPTED);
reconnect();
}
@@ -757,6 +766,8 @@ public void transportMessage(String text) {
*/
public synchronized void reconnect() {
if (getState() != STATE_INVALID) {
+ logger.info("Reconnecting...");
+
invalidateTransport();
setState(STATE_INTERRUPTED);
if (reconnectTask != null) {
diff --git a/src/io/socket/WebsocketTransport.java b/src/io/socket/WebsocketTransport.java
index 0ec9bee..ccf454b 100644
--- a/src/io/socket/WebsocketTransport.java
+++ b/src/io/socket/WebsocketTransport.java
@@ -1,14 +1,13 @@
package io.socket;
import java.io.IOException;
+import java.net.Socket;
import java.net.URI;
import java.net.URL;
import java.util.regex.Pattern;
import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSocketFactory;
-import org.java_websocket.client.DefaultSSLWebSocketClientFactory;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
@@ -30,7 +29,15 @@ public WebsocketTransport(URI uri, IOConnection connection) {
this.connection = connection;
SSLContext context = IOConnection.getSslContext();
if("wss".equals(uri.getScheme()) && context != null) {
- this.setWebSocketFactory(new DefaultSSLWebSocketClientFactory(context));
+ try {
+ int port = uri.getPort() < 0 ? 443 : uri.getPort();
+
+ Socket socket = context.getSocketFactory().createSocket(uri.getHost(), port);
+
+ this.setSocket(socket);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
}
}
@@ -46,6 +53,13 @@ public void disconnect() {
}
}
+
+ @Override
+ public void connect() {
+ IOConnection.logger.info("Connecting to " + getURI());
+
+ super.connect();
+ }
/* (non-Javadoc)
* @see io.socket.IOTransport#canSendBulk()
*/
@@ -72,8 +86,11 @@ public void invalidate() {
@Override
public void onClose(int code, String reason, boolean remote) {
- if(connection != null)
+ if(connection != null) {
+ IOConnection.logger.info("Closed [code=" + code + ", reason=" + reason + ", remote=" + remote + "]");
+
connection.transportDisconnected();
+ }
}
@Override
@@ -96,6 +113,6 @@ public String getName() {
@Override
public void onError(Exception ex) {
// TODO Auto-generated method stub
-
+ ex.printStackTrace();
}
}
\ No newline at end of file