33import com .neovisionaries .ws .client .*;
44
55import java .io .IOException ;
6+ import java .nio .charset .StandardCharsets ;
67import java .util .ArrayList ;
78import java .util .List ;
89import 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}
0 commit comments