1package dev.rafex.ether.websocket.jetty12;
29import java.nio.ByteBuffer;
33import org.eclipse.jetty.websocket.api.Callback;
34import org.eclipse.jetty.websocket.api.Session;
36import dev.rafex.ether.websocket.core.WebSocketCloseStatus;
37import dev.rafex.ether.websocket.core.WebSocketEndpoint;
45final class JettyWebSocketEndpointAdapter
implements Session.Listener.AutoDemanding {
48 private final String path;
49 private final Map<String, String> pathParams;
50 private final Map<String, List<String>> queryParams;
51 private final Map<String, List<String>> headers;
63 JettyWebSocketEndpointAdapter(
final WebSocketEndpoint endpoint,
final String path,
64 final Map<String, String> pathParams,
final Map<String, List<String>> queryParams,
65 final Map<String, List<String>> headers) {
66 this.endpoint = endpoint;
68 this.pathParams = pathParams;
69 this.queryParams = queryParams;
70 this.headers = headers;
74 public void onWebSocketOpen(
final Session session) {
77 endpoint.
onOpen(this.session);
78 }
catch (
final Exception e) {
84 public void onWebSocketText(
final String message) {
86 endpoint.
onText(session, message);
87 }
catch (
final Exception e) {
93 public void onWebSocketBinary(
final ByteBuffer payload,
final Callback callback) {
95 endpoint.
onBinary(session, payload ==
null ? ByteBuffer.allocate(0) : payload.slice());
97 }
catch (
final Exception e) {
104 public void onWebSocketPartialText(
final String payload,
final boolean fin) {
106 onWebSocketText(payload);
111 public void onWebSocketPartialBinary(
final ByteBuffer payload,
final boolean fin,
final Callback callback) {
113 onWebSocketBinary(payload, callback);
120 public void onWebSocketClose(
final int statusCode,
final String reason,
final Callback callback) {
121 if (session ==
null) {
126 endpoint.
onClose(session, WebSocketCloseStatus.of(statusCode, reason));
128 }
catch (
final Exception e) {
134 private void handleFailure(
final Exception error) {
135 endpoint.
onError(session, error);
136 if (session !=
null && session.
isOpen()) {
137 session.
close(WebSocketCloseStatus.SERVER_ERROR);
142 public void onWebSocketError(
final Throwable cause) {
143 if (session ==
null) {
146 endpoint.
onError(session, cause);
Jetty 12 implementation of WebSocketSession.
boolean isOpen()
Returns whether the underlying session is still open.
CompletionStage< Void > close(final WebSocketCloseStatus status)
Closes the session with the given status code and reason.
Define el contrato de un punto final WebSocket.
default void onText(final WebSocketSession session, final String message)
Invocado cuando se recibe un mensaje de texto del cliente.
default void onOpen(final WebSocketSession session)
Invocado cuando la conexión WebSocket se abre exitosamente.
default void onBinary(final WebSocketSession session, final ByteBuffer message)
Invocado cuando se recibe un mensaje binario del cliente.
default void onClose(final WebSocketSession session, final WebSocketCloseStatus closeStatus)
Invocado cuando el cliente solicita cerrar la conexión.
default void onError(final WebSocketSession session, final Throwable error)
Invocado cuando ocurre un error en la conexión WebSocket.