@@ -38,6 +38,9 @@ public class WssWorker implements Runnable {
3838 @ AutoStand
3939 private Logger logger ;
4040
41+ @ AutoStand
42+ Starter .Config config ;
43+
4144 public WebSocketClient webSocket ;
4245
4346 protected Integer msgr = 0 ;
@@ -62,11 +65,15 @@ public void run() {
6265
6366 @ Override
6467 public void onOpen (ServerHandshake serverHandshake ) {
68+ if (preMethods (serverHandshake )) return ;
6569 logger .info ("wss opened" );
6670 }
6771
6872 @ Override
6973 public void onMessage (String s ) {
74+ if (config .getWebSocketListener () != null )
75+ if (!config .getWebSocketListener ().onMessage (webSocket , s ))
76+ return ;
7077 Pack pack = GSON .fromJson (s , Pack .class );
7178 logger .log (String .format ("receive %s" , s ));
7279 if (pack == null ) {
@@ -80,14 +87,16 @@ public void onMessage(String s) {
8087 }
8188
8289 @ Override
83- public void send (String text ) throws NotYetConnectedException {
84- super .send (text );
85- logger .log ("wss send: " + text );
90+ public void send (String msg ) throws NotYetConnectedException {
91+ if (preMethods (msg )) return ;
92+ super .send (msg );
93+ logger .log ("wss send: " + msg );
8694 msgs ++;
8795 }
8896
8997 @ Override
9098 public void onClose (int i , String s , boolean b ) {
99+ if (preMethods (i , s , b )) return ;
91100 logger .waring ("wss closed with code " + i + " " + s );
92101 for (OnCloseListener onCloseListener : closeListeners ) {
93102 onCloseListener .onClose (i , webSocket );
@@ -96,12 +105,13 @@ public void onClose(int i, String s, boolean b) {
96105
97106 @ Override
98107 public void onError (Exception e ) {
108+ if (preMethods (e )) return ;
99109 logger .error ("wss error" );
100110 e .printStackTrace ();
101111 }
102112 };
103113 //两次心跳的事件
104- webSocket .setConnectionLostTimeout (120 );
114+ webSocket .setConnectionLostTimeout (86 );
105115 webSocket .run ();
106116 } catch (Exception e ) {
107117 logger .error ("在WebSocketClient启动时失败" );
@@ -115,11 +125,8 @@ public void onError(Exception e) {
115125 run ();
116126 }
117127 }
118-
119- @ AutoStand
120- Starter .Config config ;
121-
122128 public List <OnCloseListener > closeListeners = new ArrayList <>();
129+
123130 public List <OnPackReceive > onPackReceives = new LinkedList <>();
124131
125132 public Boolean getReconnect () {
@@ -135,6 +142,18 @@ public List<OnPackReceive> getOnPackReceives() {
135142 return onPackReceives ;
136143 }
137144
138- public void close () {
145+ private boolean preMethods (Object ... objects ) {
146+ WebSocketListener listener = config .getWebSocketListener ();
147+ if (listener == null ) return false ;
148+ Object o1 = objects [0 ];
149+ if (o1 instanceof Exception ) {
150+ return !listener .onError (webSocket , (Exception ) o1 );
151+ } else if (o1 instanceof String ) {
152+ return !listener .onSend (webSocket , o1 .toString ());
153+ } else if (o1 instanceof ServerHandshake ) {
154+ return !listener .onOpen (webSocket , (ServerHandshake ) o1 );
155+ } else if (o1 instanceof Integer ) {
156+ return !listener .onClose (webSocket , (Integer ) objects [0 ], (String ) objects [1 ], (boolean ) objects [2 ]);
157+ } else return false ;
139158 }
140159}
0 commit comments