@@ -38,6 +38,9 @@ public class WssWorker implements Runnable {
38
38
@ AutoStand
39
39
private Logger logger ;
40
40
41
+ @ AutoStand
42
+ Starter .Config config ;
43
+
41
44
public WebSocketClient webSocket ;
42
45
43
46
protected Integer msgr = 0 ;
@@ -62,11 +65,15 @@ public void run() {
62
65
63
66
@ Override
64
67
public void onOpen (ServerHandshake serverHandshake ) {
68
+ if (preMethods (serverHandshake )) return ;
65
69
logger .info ("wss opened" );
66
70
}
67
71
68
72
@ Override
69
73
public void onMessage (String s ) {
74
+ if (config .getWebSocketListener () != null )
75
+ if (!config .getWebSocketListener ().onMessage (webSocket , s ))
76
+ return ;
70
77
Pack pack = GSON .fromJson (s , Pack .class );
71
78
logger .log (String .format ("receive %s" , s ));
72
79
if (pack == null ) {
@@ -80,14 +87,16 @@ public void onMessage(String s) {
80
87
}
81
88
82
89
@ 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 );
86
94
msgs ++;
87
95
}
88
96
89
97
@ Override
90
98
public void onClose (int i , String s , boolean b ) {
99
+ if (preMethods (i , s , b )) return ;
91
100
logger .waring ("wss closed with code " + i + " " + s );
92
101
for (OnCloseListener onCloseListener : closeListeners ) {
93
102
onCloseListener .onClose (i , webSocket );
@@ -96,12 +105,13 @@ public void onClose(int i, String s, boolean b) {
96
105
97
106
@ Override
98
107
public void onError (Exception e ) {
108
+ if (preMethods (e )) return ;
99
109
logger .error ("wss error" );
100
110
e .printStackTrace ();
101
111
}
102
112
};
103
113
//两次心跳的事件
104
- webSocket .setConnectionLostTimeout (120 );
114
+ webSocket .setConnectionLostTimeout (86 );
105
115
webSocket .run ();
106
116
} catch (Exception e ) {
107
117
logger .error ("在WebSocketClient启动时失败" );
@@ -115,11 +125,8 @@ public void onError(Exception e) {
115
125
run ();
116
126
}
117
127
}
118
-
119
- @ AutoStand
120
- Starter .Config config ;
121
-
122
128
public List <OnCloseListener > closeListeners = new ArrayList <>();
129
+
123
130
public List <OnPackReceive > onPackReceives = new LinkedList <>();
124
131
125
132
public Boolean getReconnect () {
@@ -135,6 +142,18 @@ public List<OnPackReceive> getOnPackReceives() {
135
142
return onPackReceives ;
136
143
}
137
144
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 ;
139
158
}
140
159
}
0 commit comments