1010
1111public class ClusterWS {
1212 private Socket mSocket ;
13- private Options mOptions ;
13+ private String mUrl ;
1414 private Emitter mEmitter ;
1515 private boolean mUseBinary ;
1616 private IClusterWSListener mClusterWSListener ;
@@ -20,75 +20,32 @@ public class ClusterWS {
2020 private ReconnectionHandler mReconnectionHandler ;
2121
2222 public ClusterWS (String url ) {
23- mOptions = new Options (url );
23+ if (url == null ){
24+ throw new NullPointerException ("Url must be provided" );
25+ }
26+ mUrl = url ;
2427 mChannels = new ArrayList <>();
2528 mReconnectionHandler = new ReconnectionHandler (null , null , null , null , this );
2629 createSocket ();
2730 }
2831
29- private void createSocket () {
30- mSocket = new Socket (URI .create (mOptions .getUrl ()), new ISocketEvents () {
31- @ Override
32- public void onOpen () {
33- mReconnectionHandler .onOpen ();
34- }
35-
36- @ Override
37- public void onError (Exception exception ) {
38- if (mClusterWSListener != null ) {
39- mClusterWSListener .onError (exception );
40- }
41- }
42-
43- @ Override
44- public void onClose (int code , String reason ) {
45- if (mPingHandler .getPingTimer () != null ) {
46- mPingHandler .getPingTimer ().cancel ();
47- }
48-
49- if (mReconnectionHandler .isInReconnectionState ()) {
50- return ;
51- }
52- if (mReconnectionHandler .isAutoReconnect () && code != 1000 ) {
53- mReconnectionHandler .reconnect ();
54- }
55-
56- if (mClusterWSListener != null ) {
57- mClusterWSListener .onDisconnected (code , reason );
58- }
59- }
60-
61- @ Override
62- public void onBinaryMessage (ByteBuffer bytes ) {
63- String message = StandardCharsets .UTF_8 .decode (bytes ).toString ();
64- onMessageReceived (message );
65- }
66-
67- @ Override
68- public void onMessage (String message ) {
69- onMessageReceived (message );
70- }
71- });
72- mUseBinary = false ;
73- mEmitter = new Emitter ();
74- mMessageHandler = new MessageHandler ();
75- mPingHandler = new PingHandler ();
76- }
77-
7832 public ClusterWS setReconnection (Boolean autoReconnect , Integer reconnectionIntervalMin , Integer reconnectionIntervalMax , Integer reconnectionAttempts ) {
7933 mReconnectionHandler = new ReconnectionHandler (autoReconnect , reconnectionIntervalMin , reconnectionIntervalMax , reconnectionAttempts , this );
8034 return this ;
8135 }
8236
37+ public ClusterWS setClusterWSListener (IClusterWSListener clusterWSListener ) {
38+ mClusterWSListener = clusterWSListener ;
39+ return this ;
40+ }
41+
8342 public void connect () {
8443 createSocket ();
8544 mSocket .connect ();
8645 }
8746
88-
89- public ClusterWS setClusterWSListener (IClusterWSListener clusterWSListener ) {
90- mClusterWSListener = clusterWSListener ;
91- return this ;
47+ public void disconnect (Integer closeCode , String reason ) {
48+ mSocket .close (closeCode == null ? 1000 : closeCode , reason );
9249 }
9350
9451 public void on (String event , IEmitterListener listener ) {
@@ -107,9 +64,6 @@ public WebSocket.READYSTATE getState() {
10764 return mSocket .getReadyState ();
10865 }
10966
110- public void disconnect (Integer closeCode , String reason ) {
111- mSocket .close (closeCode == null ? 1000 : closeCode , reason );
112- }
11367
11468 public Channel getChannelByName (String channelName ) {
11569 for (Channel channel :
@@ -164,6 +118,55 @@ PingHandler getPingHandler() {
164118 return mPingHandler ;
165119 }
166120
121+ private void createSocket () {
122+ mSocket = new Socket (URI .create (mUrl ), new ISocketEvents () {
123+ @ Override
124+ public void onOpen () {
125+ mReconnectionHandler .onOpen ();
126+ }
127+
128+ @ Override
129+ public void onError (Exception exception ) {
130+ if (mClusterWSListener != null ) {
131+ mClusterWSListener .onError (exception );
132+ }
133+ }
134+
135+ @ Override
136+ public void onClose (int code , String reason ) {
137+ if (mPingHandler .getPingTimer () != null ) {
138+ mPingHandler .getPingTimer ().cancel ();
139+ }
140+
141+ if (mReconnectionHandler .isInReconnectionState ()) {
142+ return ;
143+ }
144+ if (mReconnectionHandler .isAutoReconnect () && code != 1000 ) {
145+ mReconnectionHandler .reconnect ();
146+ }
147+
148+ if (mClusterWSListener != null ) {
149+ mClusterWSListener .onDisconnected (code , reason );
150+ }
151+ }
152+
153+ @ Override
154+ public void onBinaryMessage (ByteBuffer bytes ) {
155+ String message = StandardCharsets .UTF_8 .decode (bytes ).toString ();
156+ onMessageReceived (message );
157+ }
158+
159+ @ Override
160+ public void onMessage (String message ) {
161+ onMessageReceived (message );
162+ }
163+ });
164+ mUseBinary = false ;
165+ mEmitter = new Emitter ();
166+ mMessageHandler = new MessageHandler ();
167+ mPingHandler = new PingHandler ();
168+ }
169+
167170 private void onMessageReceived (String message ) {
168171 if (message .equals ("#0" )) {
169172 mPingHandler .setMissedPingToZero ();
@@ -172,4 +175,5 @@ private void onMessageReceived(String message) {
172175 mMessageHandler .messageDecode (ClusterWS .this , message );
173176 }
174177 }
178+
175179}
0 commit comments