Package co.arago.hiro.client.websocket
Class AuthenticatedWebSocketHandler.InternalListener
- java.lang.Object
-
- co.arago.hiro.client.websocket.AuthenticatedWebSocketHandler.InternalListener
-
- All Implemented Interfaces:
java.net.http.WebSocket.Listener
- Enclosing class:
- AuthenticatedWebSocketHandler
protected class AuthenticatedWebSocketHandler.InternalListener extends java.lang.Object implements java.net.http.WebSocket.ListenerHiroWebSocketListener (thread) for incoming websocket messages. Derivates ofAuthenticatedWebSocketHandlerhave to supply an Object implementing the interfaceSpecificWebSocketListenerfor specific handling.
-
-
Constructor Summary
Constructors Constructor Description InternalListener(java.lang.String name, SpecificWebSocketListener listener)Constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.concurrent.CompletionStage<?>onClose(java.net.http.WebSocket webSocket, int statusCode, java.lang.String reason)Receives close messages.voidonError(java.net.http.WebSocket webSocket, java.lang.Throwable error)Handles errors (Throwable) regarding websocket operation.voidonOpen(java.net.http.WebSocket webSocket)java.util.concurrent.CompletionStage<?>onPing(java.net.http.WebSocket webSocket, java.nio.ByteBuffer message)Keep-alive messagesjava.util.concurrent.CompletionStage<?>onText(java.net.http.WebSocket webSocket, java.lang.CharSequence data, boolean last)Collects a text message from the websocket until 'last' is true.protected voidreset()Reset listener for new usage.
-
-
-
Constructor Detail
-
InternalListener
public InternalListener(java.lang.String name, SpecificWebSocketListener listener)Constructor- Parameters:
name- Name of the handler (mainly for logging)listener- The listener which received messages.
-
-
Method Detail
-
onOpen
public void onOpen(java.net.http.WebSocket webSocket)
Sets the status from
AuthenticatedWebSocketHandler.Status.STARTINGorAuthenticatedWebSocketHandler.Status.RESTARTINGtoAuthenticatedWebSocketHandler.Status.RUNNING_PRELIMINARY. Any other state will result in an Exception.WebSocket.request(long)is NOT called here, but only after the CompletableFuture ofWebSocket.Builder.buildAsync(URI, WebSocket.Listener)has finished successfully inAuthenticatedWebSocketHandler.createWebSocket()andAuthenticatedWebSocketHandler.statusis not FAILURE. This ensures, thatonText(WebSocket, CharSequence, boolean)is only called after that.- Specified by:
onOpenin interfacejava.net.http.WebSocket.Listener- Parameters:
webSocket- The webSocket using this HiroWebSocketListener.- Throws:
java.lang.IllegalStateException- When the status is neitherAuthenticatedWebSocketHandler.Status.STARTINGnorAuthenticatedWebSocketHandler.Status.RESTARTING.java.lang.RuntimeException- On all other exceptions caught.- See Also:
AuthenticatedWebSocketHandler.createWebSocket()
-
onText
public java.util.concurrent.CompletionStage<?> onText(java.net.http.WebSocket webSocket, java.lang.CharSequence data, boolean last)Collects a text message from the websocket until 'last' is true. Then checks for an error message. If the error is 401 and the status isAuthenticatedWebSocketHandler.Status.RUNNING, tries to refresh the token. When the first non-error message comes it, sets the status fromAuthenticatedWebSocketHandler.Status.RUNNING_PRELIMINARYtoAuthenticatedWebSocketHandler.Status.RUNNING.- Specified by:
onTextin interfacejava.net.http.WebSocket.Listener- Parameters:
webSocket- The webSocket using this HiroWebSocketListener.data- Message blocklast- True if this is the last message block of a message- Returns:
- CompletionStage. See documentation at
WebSocket.Listener.
-
onPing
public java.util.concurrent.CompletionStage<?> onPing(java.net.http.WebSocket webSocket, java.nio.ByteBuffer message)Keep-alive messages- Specified by:
onPingin interfacejava.net.http.WebSocket.Listener- Parameters:
webSocket- The webSocket using this HiroWebSocketListener.message- The message received. It will be reflected back via Pong.- Returns:
- The CompletionStage of
WebSocket.sendPong(ByteBuffer).
-
onClose
public java.util.concurrent.CompletionStage<?> onClose(java.net.http.WebSocket webSocket, int statusCode, java.lang.String reason)Receives close messages. This will try to restart the WebSocket unless the status isAuthenticatedWebSocketHandler.Status.CLOSING.- Specified by:
onClosein interfacejava.net.http.WebSocket.Listener- Parameters:
webSocket- The webSocket using this HiroWebSocketListener.statusCode- Status code sent from the remote side.reason- Reason text sent from the remote side.- Returns:
- null
-
onError
public void onError(java.net.http.WebSocket webSocket, java.lang.Throwable error)Handles errors (Throwable) regarding websocket operation. This will try to restart the WebSocket unless the status isAuthenticatedWebSocketHandler.Status.CLOSING. This will tear down the WebSocket when the status isAuthenticatedWebSocketHandler.Status.FAILED.- Specified by:
onErrorin interfacejava.net.http.WebSocket.Listener- Parameters:
webSocket- The webSocket using this HiroWebSocketListener.error- The Throwable to handle.
-
reset
protected void reset()
Reset listener for new usage. Clears any previous exception by settingexception= null.
-
-