44import java .net .URI ;
55import java .nio .ByteBuffer ;
66import java .time .Duration ;
7- import java .util .List ;
8- import java .util .Map ;
97import java .util .concurrent .CompletableFuture ;
108import java .util .concurrent .TimeUnit ;
119import java .util .function .Consumer ;
1917import info .unterrainer .websocketclient .exceptions .WebsocketConnectingException ;
2018import info .unterrainer .websocketclient .exceptions .WebsocketSendingMessageException ;
2119import jakarta .websocket .ClientEndpointConfig ;
22- import jakarta .websocket .ClientEndpointConfig .Builder ;
2320import jakarta .websocket .CloseReason ;
2421import jakarta .websocket .Session ;
2522import lombok .Data ;
@@ -129,6 +126,7 @@ public void close() {
129126 }
130127
131128 public void establish () {
129+ String at = null ;
132130 String accessToken = null ;
133131 log .debug ("Establish called." );
134132
@@ -141,26 +139,25 @@ public void establish() {
141139 throw new WebsocketConnectingException ("Failed to create WebSocket ClientManager." , e );
142140 }
143141 endpoints = new WebsocketEndpoints (this );
144- Builder c = ClientEndpointConfig .Builder .create ();
145142
146143 if (keycloakHost != null ) {
147144 OauthTokenManager tokenManager = new OauthTokenManager (keycloakHost , keycloakClient );
148145 LocalOauthTokens tokens = tokenManager .getTokensFromCredentials (keycloakClient , keycloakUser ,
149146 keycloakPassword );
150147 accessToken = tokens .getAccessToken ();
151- String at = "Bearer " + accessToken ;
152-
153- c .configurator (new ClientEndpointConfig .Configurator () {
154- @ Override
155- public void beforeRequest (Map <String , List <String >> headers ) {
156- headers .put ("Authorization" , List .of (at ));
157- }
158- });
148+ at = "Bearer " + accessToken ;
159149 }
160- ClientEndpointConfig config = c .build ();
161150
162151 try {
163- container .connectToServer (endpoints , config , URI .create (host ));
152+ container .connectToServer (endpoints ,
153+ ClientEndpointConfig .Builder .create ().configurator (new ClientEndpointConfig .Configurator () {
154+ }).build (), URI .create (host ));
155+ if (at != null ) {
156+ Session s = awaitOpen (Duration .ofMillis (5000L ));
157+ s .getBasicRemote ().sendText (at );
158+ } else {
159+ log .debug ("No access token provided, connecting without authentication." );
160+ }
164161 } catch (Exception e ) {
165162 log .error ("Error connecting to WebSocket server: " , e );
166163 throw new WebsocketConnectingException ("Failed to connect to WebSocket server at " + host , e );
0 commit comments