@@ -37,6 +37,8 @@ public class WebsocketConnection implements AutoCloseable {
37
37
38
38
@ Getter
39
39
private final String host ;
40
+ @ lombok .Builder .Default
41
+ private final String name = "" ;
40
42
private final Consumer <EventContext > onOpenHandler ;
41
43
private final Consumer <EventContext > onMessageHandler ;
42
44
private final Consumer <EventContext > onBinaryMessageHandler ;
@@ -63,7 +65,7 @@ public Session awaitOpen(Duration timeoutInMillis) {
63
65
}
64
66
return sessionReady .get (timeoutInMillis .toMillis (), TimeUnit .MILLISECONDS );
65
67
} catch (Exception e ) {
66
- throw new IllegalStateException ("WebSocket did not open in time." , e );
68
+ throw new IllegalStateException ("(" + name + ") WebSocket did not open in time." , e );
67
69
}
68
70
}
69
71
@@ -75,43 +77,45 @@ public void sendPing() {
75
77
try {
76
78
s .getBasicRemote ().sendPing (ByteBuffer .allocate (1 ));
77
79
} catch (Exception e ) {
78
- log .error ("Error sending ping: " , e );
79
- throw new WebsocketSendingMessageException (String .format ("Failed to send ping." ), e );
80
+ log .error ("(" + name + ") Error sending ping: " , e );
81
+ throw new WebsocketSendingMessageException (String .format ("(" + name + ") Failed to send ping." ), e );
80
82
}
81
- log .debug ("Sent ping" );
83
+ log .debug ("(" + name + ") Sent ping" );
82
84
}
83
85
84
86
public void send (String message ) {
85
87
Session s = awaitOpen (Duration .ofMillis (5000L ));
86
88
try {
87
89
s .getBasicRemote ().sendText (message );
88
90
} catch (Exception e ) {
89
- log .error ("Error sending message: " , e );
90
- throw new WebsocketSendingMessageException (String .format ("Failed to send message [%s]." , message ), e );
91
+ log .error ("(" + name + ") Error sending message: " , e );
92
+ throw new WebsocketSendingMessageException (
93
+ String .format ("(" + name + ") Failed to send message [%s]." , message ), e );
91
94
}
92
- log .debug ("Sent message: " + message );
95
+ log .debug ("(" + name + ") Sent message: " + message );
93
96
}
94
97
95
98
public void send (byte [] message ) {
96
99
Session s = awaitOpen (Duration .ofMillis (5000L ));
97
100
try {
98
101
s .getBasicRemote ().sendBinary (java .nio .ByteBuffer .wrap (message ));
99
102
} catch (Exception e ) {
100
- log .error ("Error sending binary message: " , e );
101
- throw new WebsocketSendingMessageException ("Failed to send binary message." , e );
103
+ log .error ("(" + name + ") Error sending binary message: " , e );
104
+ throw new WebsocketSendingMessageException ("(" + name + ") Failed to send binary message." , e );
102
105
}
103
- log .debug ("Sent binary message of length: " + message .length );
106
+ log .debug ("(" + name + ") Sent binary message of length: " + message .length );
104
107
}
105
108
106
109
public <T > void send (T message ) {
107
110
Session s = awaitOpen (Duration .ofMillis (5000L ));
108
111
try {
109
112
s .getBasicRemote ().sendText (jsonMapper .toStringFrom (message ));
110
113
} catch (Exception e ) {
111
- log .error ("Error sending message: " , e );
112
- throw new WebsocketSendingMessageException (String .format ("Failed to send message [%s]." , message ), e );
114
+ log .error ("(" + name + ") Error sending message [{}]" , message , e );
115
+ throw new WebsocketSendingMessageException (
116
+ String .format ("(" + name + ") Failed to send message [%s]." , message ), e );
113
117
}
114
- log .debug ("Sent message: " + message );
118
+ log .debug ("(" + name + ") Sent message: " + message );
115
119
}
116
120
117
121
@ Override
@@ -120,48 +124,52 @@ public void close() {
120
124
try {
121
125
s .close (new CloseReason (CloseReason .CloseCodes .NORMAL_CLOSURE , "Normal closure" ));
122
126
} catch (IOException e ) {
123
- log .error ("Error closing session." , e );
124
- throw new WebsocketClosingException ("Failed to close WebSocket session." , e );
127
+ log .error ("(" + name + ") Error closing session." , e );
128
+ throw new WebsocketClosingException ("(" + name + ") Failed to close WebSocket session." , e );
125
129
}
126
130
}
127
131
128
132
public void establish () {
129
133
String at = null ;
130
134
String accessToken = null ;
131
- log .debug ("Establish called." );
135
+ log .debug ("(" + name + ") Establish called." );
132
136
133
137
ClientManager container ;
134
138
try {
135
139
container = ClientManager .createClient ();
136
- log .info ("ClientManager created" );
140
+ log .info ("(" + name + ") ClientManager created" );
137
141
} catch (Exception e ) {
138
- log .error ("Failed to create ClientManager: {}" , e .getMessage (), e );
139
- throw new WebsocketConnectingException ("Failed to create WebSocket ClientManager." , e );
142
+ log .error ("(" + name + ") Failed to create ClientManager: {}" , e .getMessage (), e );
143
+ throw new WebsocketConnectingException ("(" + name + ") Failed to create WebSocket ClientManager." , e );
140
144
}
141
- endpoints = new WebsocketEndpoints (this );
145
+ endpoints = new WebsocketEndpoints (this , name );
142
146
143
147
if (keycloakHost != null ) {
144
148
OauthTokenManager tokenManager = new OauthTokenManager (keycloakHost , keycloakClient );
145
149
LocalOauthTokens tokens = tokenManager .getTokensFromCredentials (keycloakClient , keycloakUser ,
146
150
keycloakPassword );
147
151
accessToken = tokens .getAccessToken ();
148
152
at = "Bearer " + accessToken ;
153
+ log .debug ("(" + name + ") Access token retrieved: {}" , accessToken );
149
154
}
150
155
151
156
try {
152
157
container .connectToServer (endpoints ,
153
158
ClientEndpointConfig .Builder .create ().configurator (new ClientEndpointConfig .Configurator () {
154
159
}).build (), URI .create (host ));
155
160
if (at != null ) {
161
+ log .debug ("(" + name + ") Access token provided, sending authentication token." );
156
162
Session s = awaitOpen (Duration .ofMillis (5000L ));
157
163
s .getBasicRemote ().sendText (at );
164
+ log .debug ("(" + name + ") Authentication token sent: {}" , at );
158
165
} else {
159
- log .debug ("No access token provided, connecting without authentication." );
166
+ log .debug ("(" + name + ") No access token provided, connecting without authentication." );
160
167
}
161
168
} catch (Exception e ) {
162
- log .error ("Error connecting to WebSocket server: " , e );
163
- throw new WebsocketConnectingException ("Failed to connect to WebSocket server at " + host , e );
169
+ log .error ("(" + name + ") Error connecting to WebSocket server: " , e );
170
+ throw new WebsocketConnectingException ("(" + name + ") Failed to connect to WebSocket server at " + host ,
171
+ e );
164
172
}
165
- log .info ("WebSocket client connected to: {}" , host );
173
+ log .info ("(" + name + ") WebSocket client connected to: {}" , host );
166
174
}
167
175
}
0 commit comments