diff --git a/docs/README.md b/docs/README.md
index a612746..67e80ea 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -2,13 +2,13 @@
Build Scalable Node.js WebSocket Applications
-
+
-
-
-
+
+
+
@@ -17,5 +17,5 @@
- Find more about ClusterWS JavaScript Client in Wiki Documentation
+ Find more about ClusterWS Java Client in Wiki Documentation
\ No newline at end of file
diff --git a/src/main/java/com/clusterws/ClusterWS.java b/src/main/java/com/clusterws/ClusterWS.java
index b77af17..414b8d3 100644
--- a/src/main/java/com/clusterws/ClusterWS.java
+++ b/src/main/java/com/clusterws/ClusterWS.java
@@ -21,6 +21,7 @@ public class ClusterWS {
private PingHandler mPingHandler;
private List mChannels;
private ReconnectionParams mReconnectionParams;
+ private static final byte[] PONG = "A".getBytes();
public ClusterWS(String url) {
if (url == null) {
@@ -130,7 +131,10 @@ private void createSocket() {
mSocket = new Socket(URI.create(mUrl), new ISocketEvents() {
@Override
public void onOpen() {
- mClusterWSListener.onConnected();
+ for (Channel channel :
+ mChannels) {
+ channel.subscribe();
+ }
}
@Override
@@ -145,8 +149,10 @@ public void onClose(int code, String reason) {
if (mPingHandler.getPingTimer() != null) {
mPingHandler.getPingTimer().cancel();
}
- if (mReconnectionParams.isAutoReconnect() && code != 1000 && (mReconnectionParams.getReconnectionAttempts() == 0 || mReconnectionParams.getReconnectionsAttempted() < mReconnectionParams.getReconnectionAttempts())) {
- if (mSocket.getReadyState() == WebSocket.READYSTATE.CLOSED || mSocket.getReadyState() == WebSocket.READYSTATE.NOT_YET_CONNECTED) {
+ if (mReconnectionParams.isAutoReconnect()
+ && code != 1000
+ && (mReconnectionParams.getReconnectionAttempts() == 0 || mReconnectionParams.getReconnectionsAttempted() < mReconnectionParams.getReconnectionAttempts())) {
+ if (mSocket.getReadyState() == WebSocket.READYSTATE.CLOSED || mSocket.getReadyState() == WebSocket.READYSTATE.NOT_YET_CONNECTED || mSocket.getReadyState() == WebSocket.READYSTATE.CLOSING) {
mReconnectionParams.incrementReconnectionsAttempted();
int randomDelay = ThreadLocalRandom.current().nextInt(1,
mReconnectionParams.getReconnectionIntervalMax() -
@@ -165,8 +171,17 @@ public void run() {
@Override
public void onBinaryMessage(ByteBuffer bytes) {
- String message = StandardCharsets.UTF_8.decode(bytes).toString();
- onMessageReceived(message);
+ System.out.println("GOT MESSAGE");
+ byte[] arr = new byte[bytes.remaining()];
+ bytes.get(arr);
+ if (arr.length == 1 && arr[0] == 57) {
+ mPingHandler.setMissedPingToZero();
+ mSocket.send(PONG);
+ } else {
+ String message = new String(arr, StandardCharsets.UTF_8);
+ onMessageReceived(message);
+ }
+
}
@Override
@@ -181,11 +196,7 @@ public void onMessage(String message) {
}
private void onMessageReceived(String message) {
- if (message.equals("#0")) {
- mPingHandler.setMissedPingToZero();
- send("#1", null, "ping");
- } else {
- mMessageHandler.messageDecode(ClusterWS.this, message);
- }
+ System.out.println("MESSAGE IS " + message);
+ mMessageHandler.messageDecode(ClusterWS.this, message);
}
}
diff --git a/src/test/java/com/clusterws/ChannelServerTest.java b/src/test/java/com/clusterws/ChannelServerTest.java
index 6d7ea33..39f1643 100644
--- a/src/test/java/com/clusterws/ChannelServerTest.java
+++ b/src/test/java/com/clusterws/ChannelServerTest.java
@@ -16,7 +16,7 @@ public class ChannelServerTest {
@Before
public void init() throws Exception {
- mClusterWS = new ClusterWS("ws://localhost:80");
+ mClusterWS = new ClusterWS("ws://localhost:3000");
mGotTheData = false;
mReceivedData = null;
}
@@ -189,7 +189,7 @@ public void onDataReceived(String channelName, Object data) {
}
});
mClusterWS.disconnect(4001, "hui");
- Thread.sleep(1000);
+ Thread.sleep(3000);
channel.publish("testData");
Thread.sleep(1000);
assertTrue("Did not get the data", mGotTheData);
diff --git a/src/test/java/com/clusterws/ClusterWSTest.java b/src/test/java/com/clusterws/ClusterWSTest.java
index 7d2b387..c189b88 100644
--- a/src/test/java/com/clusterws/ClusterWSTest.java
+++ b/src/test/java/com/clusterws/ClusterWSTest.java
@@ -20,7 +20,7 @@ public class ClusterWSTest {
@Before
public void init() {
- mClusterWS = new ClusterWS("ws://localhost:80");
+ mClusterWS = new ClusterWS("ws://localhost:3000");
receivedData = null;
gotTheData = false;
}
@@ -36,7 +36,7 @@ public void connect() throws Exception {
mClusterWS.connect();
Thread.sleep(1000);
- assertEquals("Socket did not connect", WebSocket.READYSTATE.OPEN,mClusterWS.getState());
+ assertEquals("Socket did not connect", WebSocket.READYSTATE.OPEN, mClusterWS.getState());
}
@Test
@@ -233,24 +233,24 @@ public void onDisconnected(int code, String reason) {
}
@Test
- public void testReconnection() throws Exception{
- mClusterWS.setReconnection(true,1000,2000,null);
+ public void testReconnection() throws Exception {
+ mClusterWS.setReconnection(true, 1000, 2000, null);
mClusterWS.connect();
Thread.sleep(1000);
- mClusterWS.disconnect(3002,"test");
- Thread.sleep(2000);
+ mClusterWS.disconnect(3002, "test");
+ Thread.sleep(4000);
assertEquals("Did not reconnect", WebSocket.READYSTATE.OPEN, mClusterWS.getState());
}
@Test
- public void testPingPong() throws Exception{
+ public void testPingPong() throws Exception {
mClusterWS.connect();
Thread.sleep(1900);
- assertEquals("Websocket disconnected", WebSocket.READYSTATE.OPEN,mClusterWS.getState());
+ assertEquals("Websocket disconnected", WebSocket.READYSTATE.OPEN, mClusterWS.getState());
}
@Test(expected = NullPointerException.class)
- public void testNullUrl() throws Exception{
+ public void testNullUrl() throws Exception {
mClusterWS = new ClusterWS(null);
}