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