From 47f9f010eb2cecdbbf0193bd6eb34951ca54f690 Mon Sep 17 00:00:00 2001 From: Angelos Veglektsis Date: Sun, 19 Aug 2018 20:21:32 +0300 Subject: [PATCH 1/3] avoid creating new socket every time on connectAsync --- src/main/java/io/github/sac/Socket.java | 29 +++++++++++++++---------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/main/java/io/github/sac/Socket.java b/src/main/java/io/github/sac/Socket.java index f8c9c0b..644c762 100644 --- a/src/main/java/io/github/sac/Socket.java +++ b/src/main/java/io/github/sac/Socket.java @@ -491,18 +491,25 @@ public void connect() { } public void connectAsync() { - try { - ws = factory.createSocket(URL); - } catch (IOException e) { - logger.severe(e.toString()); - } - ws.addExtension("permessage-deflate; client_max_window_bits"); - for (Map.Entry entry : headers.entrySet()) { - ws.addHeader(entry.getKey(), entry.getValue()); - } + if(ws == null){ + try { + ws = factory.createSocket(URL); + } catch (IOException e) { + logger.severe(e.toString()); + } - ws.addListener(adapter); - ws.connectAsynchronously(); + ws.addExtension("permessage-deflate; client_max_window_bits"); + for (Map.Entry entry : headers.entrySet()) { + ws.addHeader(entry.getKey(), entry.getValue()); + } + + ws.addListener(adapter); + ws.connectAsynchronously(); + }else if(ws.getState() == WebSocketState.CLOSED){ + ws.connectAsynchronously(); + }else{ + logger.warning("Unable to connect: there is an active connection maybe?"); + } } private void reconnect() { From e7b3ba10fec273fbdedf751667dc3be267c05292 Mon Sep 17 00:00:00 2001 From: Angelos Veglektsis Date: Sun, 19 Aug 2018 20:57:14 +0300 Subject: [PATCH 2/3] new connection only if ws is null or closed --- src/main/java/io/github/sac/Socket.java | 101 ++++++++++++------------ 1 file changed, 52 insertions(+), 49 deletions(-) diff --git a/src/main/java/io/github/sac/Socket.java b/src/main/java/io/github/sac/Socket.java index 644c762..a0b090b 100644 --- a/src/main/java/io/github/sac/Socket.java +++ b/src/main/java/io/github/sac/Socket.java @@ -436,62 +436,67 @@ public Map getHeaders() { public void connect() { - try { - ws = factory.createSocket(URL); - } catch (IOException e) { - logger.severe(e.toString()); - } - ws.addExtension("permessage-deflate; client_max_window_bits"); - for (Map.Entry entry : headers.entrySet()) { - ws.addHeader(entry.getKey(), entry.getValue()); - } + if(ws == null || ws.getState() == WebSocketState.CLOSED) { + try { + ws = factory.createSocket(URL); + } catch (IOException e) { + logger.severe(e.toString()); + } + ws.addExtension("permessage-deflate; client_max_window_bits"); + for (Map.Entry entry : headers.entrySet()) { + ws.addHeader(entry.getKey(), entry.getValue()); + } - ws.addListener(adapter); - - try { - ws.connect(); - } catch (OpeningHandshakeException e) { - // A violation against the WebSocket protocol was detected - // during the opening handshake. - - logger.severe(e.toString()); - // Status line. - StatusLine sl = e.getStatusLine(); - logger.info("=== Status Line ==="); - logger.info("HTTP Version = \n" + sl.getHttpVersion()); - logger.info("Status Code = \n" + sl.getStatusCode()); - logger.info("Reason Phrase = \n" + sl.getReasonPhrase()); - - // HTTP headers. - Map> headers = e.getHeaders(); - logger.info("=== HTTP Headers ==="); - for (Map.Entry> entry : headers.entrySet()) { - // Header name. - String name = entry.getKey(); - - // Values of the header. - List values = entry.getValue(); - - if (values == null || values.size() == 0) { - // Print the name only. - logger.info(name); - continue; - } + ws.addListener(adapter); + + try { + ws.connect(); + } catch (OpeningHandshakeException e) { + // A violation against the WebSocket protocol was detected + // during the opening handshake. + + logger.severe(e.toString()); + // Status line. + StatusLine sl = e.getStatusLine(); + logger.info("=== Status Line ==="); + logger.info("HTTP Version = \n" + sl.getHttpVersion()); + logger.info("Status Code = \n" + sl.getStatusCode()); + logger.info("Reason Phrase = \n" + sl.getReasonPhrase()); + + // HTTP headers. + Map> headers = e.getHeaders(); + logger.info("=== HTTP Headers ==="); + for (Map.Entry> entry : headers.entrySet()) { + // Header name. + String name = entry.getKey(); + + // Values of the header. + List values = entry.getValue(); + + if (values == null || values.size() == 0) { + // Print the name only. + logger.info(name); + continue; + } - for (String value : values) { - // Print the name and the value. - logger.info(name + value + "\n"); + for (String value : values) { + // Print the name and the value. + logger.info(name + value + "\n"); + } } + } catch (WebSocketException e) { + e.printStackTrace(); + listener.onConnectError(Socket.this, e); + reconnect(); } - } catch (WebSocketException e) { - listener.onConnectError(Socket.this, e); - reconnect(); + }else{ + logger.warning("Unable to connect: there is an active connection maybe?"); } } public void connectAsync() { - if(ws == null){ + if(ws == null || ws.getState() == WebSocketState.CLOSED){ try { ws = factory.createSocket(URL); } catch (IOException e) { @@ -505,8 +510,6 @@ public void connectAsync() { ws.addListener(adapter); ws.connectAsynchronously(); - }else if(ws.getState() == WebSocketState.CLOSED){ - ws.connectAsynchronously(); }else{ logger.warning("Unable to connect: there is an active connection maybe?"); } From 3c71d0a705368554fcd7c1131c5e5a670927b756 Mon Sep 17 00:00:00 2001 From: Angelos Veglektsis Date: Sun, 19 Aug 2018 21:00:51 +0300 Subject: [PATCH 3/3] fix log --- src/main/java/io/github/sac/Socket.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/sac/Socket.java b/src/main/java/io/github/sac/Socket.java index a0b090b..2d90729 100644 --- a/src/main/java/io/github/sac/Socket.java +++ b/src/main/java/io/github/sac/Socket.java @@ -490,7 +490,7 @@ public void connect() { reconnect(); } }else{ - logger.warning("Unable to connect: there is an active connection maybe?"); + logger.warning("Unable to connect: there is an active connection"); } } @@ -511,7 +511,7 @@ public void connectAsync() { ws.addListener(adapter); ws.connectAsynchronously(); }else{ - logger.warning("Unable to connect: there is an active connection maybe?"); + logger.warning("Unable to connect: there is an active connection"); } }