Skip to content
This repository was archived by the owner on Nov 2, 2020. It is now read-only.

Commit 121a723

Browse files
authored
Merge pull request #1 from ClusterWS/next
Next
2 parents c788d9a + 67bda77 commit 121a723

File tree

4 files changed

+54
-23
lines changed

4 files changed

+54
-23
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ This is official Java client for [ClusterWS](https://github.com/ClusterWS/Cluste
3030
<dependency>
3131
<groupId>com.github.ClusterWS</groupId>
3232
<artifactId>ClusterWS-Client-Java</artifactId>
33-
<version>1.2.1</version>
33+
<version>1.3.0</version>
3434
</dependency>
3535
```
3636

@@ -45,7 +45,7 @@ allprojects {
4545
}
4646
4747
dependencies {
48-
compile 'com.github.ClusterWS:ClusterWS-Client-Java:1.2.1'
48+
compile 'com.github.ClusterWS:ClusterWS-Client-Java:1.3.0'
4949
}
5050
```
5151

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version '1.2.1'
1+
version '1.3.0'
22

33
apply plugin: 'java'
44
apply plugin: 'maven'

src/main/java/com/ClusterWS/ClusterWS.java

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.neovisionaries.ws.client.*;
44

55
import java.io.IOException;
6+
import java.nio.charset.StandardCharsets;
67
import java.util.ArrayList;
78
import java.util.List;
89
import java.util.Map;
@@ -20,10 +21,11 @@ public class ClusterWS {
2021
private Emitter mEmitter;
2122
private ArrayList<Channel> mChannels;
2223
private Message mMessageHandler;
24+
private boolean mUseBinary;
2325

2426
//Ping
2527
private Timer mPingTimer;
26-
private int mLost;
28+
private int mMissedPing;
2729

2830
private Reconnection mReconnectionHandler;
2931

@@ -33,6 +35,7 @@ public ClusterWS(String url, String port) {
3335
mChannels = new ArrayList<>();
3436
mMessageHandler = new Message();
3537
mReconnectionHandler = new Reconnection(null, null, null, null, this);
38+
mUseBinary = false;
3639
create();
3740
}
3841

@@ -44,9 +47,7 @@ private void create() {
4447
@Override
4548
public void onConnected(WebSocket websocket, Map<String, List<String>> headers) throws Exception {
4649
mReconnectionHandler.onConnected();
47-
if (mClusterWSListener != null) {
48-
mClusterWSListener.onConnected(ClusterWS.this);
49-
}
50+
mPingTimer = new Timer();
5051
}
5152

5253
@Override
@@ -63,16 +64,28 @@ public void onConnectError(WebSocket websocket, WebSocketException exception) th
6364
@Override
6465
public void onTextMessage(WebSocket websocket, String text) throws Exception {
6566
if (text.equals("#0")) {
66-
mLost = 0;
67+
mMissedPing = 0;
6768
send("#1", null, "ping");
6869
} else {
6970
mMessageHandler.messageDecode(ClusterWS.this, text);
7071
}
7172
}
7273

74+
@Override
75+
public void onBinaryMessage(WebSocket websocket, byte[] binary) throws Exception {
76+
String message = new String(binary, StandardCharsets.UTF_8);
77+
System.out.println(message);
78+
if (message.equals("#0")) {
79+
mMissedPing = 0;
80+
send("#1", null, "ping");
81+
} else {
82+
mMessageHandler.messageDecode(ClusterWS.this, message);
83+
}
84+
}
85+
7386
@Override
7487
public void onDisconnected(WebSocket websocket, WebSocketFrame serverCloseFrame, WebSocketFrame clientCloseFrame, boolean closedByServer) throws Exception {
75-
mLost = 0;
88+
mMissedPing = 0;
7689
if (mPingTimer != null) {
7790
mPingTimer.cancel();
7891
mPingTimer = new Timer();
@@ -98,6 +111,7 @@ public void onDisconnected(WebSocket websocket, WebSocketFrame serverCloseFrame,
98111
}
99112
}
100113

114+
101115
});
102116

103117
} catch (IOException e) {
@@ -141,7 +155,12 @@ public void on(String event, EmitterListener listener) {
141155
}
142156

143157
public void send(String event, Object data) {
144-
mWebSocket.sendText(mMessageHandler.messageEncode(event, data, "emit"));
158+
System.out.println(mUseBinary);
159+
if (mUseBinary){
160+
mWebSocket.sendBinary(mMessageHandler.messageEncode(event, data, "emit").getBytes());
161+
} else {
162+
mWebSocket.sendText(mMessageHandler.messageEncode(event, data, "emit"));
163+
}
145164
}
146165

147166
public Channel subscribe(String channelName) {
@@ -194,15 +213,23 @@ Timer getPingTimer() {
194213
return mPingTimer;
195214
}
196215

197-
int getLost() {
198-
return mLost;
216+
int getMissedPing() {
217+
return mMissedPing;
199218
}
200219

201220
void incrementLost() {
202-
mLost++;
221+
mMissedPing++;
203222
}
204223

205224
boolean isConnectedAsynchronously() {
206225
return mIsConnectedAsynchronously;
207226
}
227+
228+
void setUseBinary(boolean useBinary) {
229+
mUseBinary = useBinary;
230+
}
231+
232+
public ClusterWSListener getClusterWSListener() {
233+
return mClusterWSListener;
234+
}
208235
}

src/main/java/com/ClusterWS/Message.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,15 @@ String messageEncode(String event, Object data, String type) {
3232
}
3333
}
3434

35-
void messageDecode(final ClusterWS socket, String message){
36-
System.out.println("Message is " + message);
35+
void messageDecode(final ClusterWS socket, String message) {
3736
JSONArray jsonArray = new JSONObject(message).getJSONArray("#");
38-
switch (jsonArray.getString(0)){
37+
switch (jsonArray.getString(0)) {
3938
case "p":
4039
ArrayList<Channel> channels = socket.getChannels();
4140
String channelName = jsonArray.getString(1);
42-
for (Channel channel:
43-
channels) {
44-
if (channel.getChannelName().equals(channelName)){
41+
for (Channel channel :
42+
channels) {
43+
if (channel.getChannelName().equals(channelName)) {
4544
channel.onMessage(jsonArray.get(2));
4645
break;
4746
}
@@ -51,18 +50,23 @@ void messageDecode(final ClusterWS socket, String message){
5150
socket.getEmitter().emit(jsonArray.getString(1), jsonArray.get(2));
5251
break;
5352
case "s":
54-
if (jsonArray.getString(1).equals("c")){
53+
if (jsonArray.getString(1).equals("c")) {
5554
socket.getPingTimer().scheduleAtFixedRate(new TimerTask() {
5655
@Override
5756
public void run() {
58-
if (socket.getLost() < 3){
57+
if (socket.getMissedPing() < 3) {
5958
socket.incrementLost();
6059
} else {
61-
socket.disconnect(4001,"No pings");
60+
socket.disconnect(4001, "No pings");
6261
cancel();
6362
}
6463
}
65-
},0,jsonArray.getJSONObject(2).getInt("ping"));
64+
}, 0, jsonArray.getJSONObject(2).getInt("ping"));
65+
boolean useBinary = jsonArray.getJSONObject(2).getBoolean("binary");
66+
socket.setUseBinary(useBinary);
67+
if (socket.getClusterWSListener() != null) {
68+
socket.getClusterWSListener().onConnected(socket);
69+
}
6670
}
6771
break;
6872
}

0 commit comments

Comments
 (0)