1package dev.rafex.ether.glowroot.jetty12;
3import java.nio.ByteBuffer;
6import org.glowroot.agent.api.Glowroot;
34import dev.rafex.ether.websocket.core.WebSocketCloseStatus;
35import dev.rafex.ether.websocket.core.WebSocketEndpoint;
36import dev.rafex.ether.websocket.core.WebSocketSession;
60 if (delegate ==
null) {
61 throw new IllegalArgumentException(
"delegate must not be null");
63 this.delegate = delegate;
70 Glowroot.addTransactionAttribute(
"websocket.event",
"open");
71 }
catch (
final Throwable ignore) {
73 delegate.onOpen(session);
80 Glowroot.addTransactionAttribute(
"websocket.event",
"text");
81 Glowroot.addTransactionAttribute(
"websocket.message_length",
82 String.valueOf(message ==
null ? 0 : message.length()));
83 }
catch (
final Throwable ignore) {
85 delegate.onText(session, message);
90 tag(session,
"BINARY");
92 Glowroot.addTransactionAttribute(
"websocket.event",
"binary");
93 Glowroot.addTransactionAttribute(
"websocket.message_length",
94 String.valueOf(message ==
null ? 0 : message.remaining()));
95 }
catch (
final Throwable ignore) {
97 delegate.onBinary(session, message);
102 tag(session,
"CLOSE");
104 Glowroot.addTransactionAttribute(
"websocket.event",
"close");
105 if (closeStatus !=
null) {
106 Glowroot.addTransactionAttribute(
"websocket.close_code", String.valueOf(closeStatus.code()));
107 Glowroot.addTransactionAttribute(
"websocket.close_reason", closeStatus.reason());
109 }
catch (
final Throwable ignore) {
111 delegate.onClose(session, closeStatus);
116 tag(session,
"ERROR");
118 Glowroot.addTransactionAttribute(
"websocket.event",
"error");
120 Glowroot.addTransactionAttribute(
"error", error.getClass().getName());
121 Glowroot.addTransactionAttribute(
"error.message", error.getMessage() ==
null ?
"" : error.getMessage());
123 }
catch (
final Throwable ignore) {
125 delegate.onError(session, error);
130 return delegate.subprotocols();
133 private static void tag(
final WebSocketSession session,
final String event) {
135 Glowroot.setTransactionType(
"WebSocket");
136 Glowroot.setTransactionName(event +
" " + session.
path());
137 Glowroot.addTransactionAttribute(
"websocket.session_id", session.
id());
138 Glowroot.addTransactionAttribute(
"websocket.path", session.
path());
139 }
catch (
final Throwable ignore) {
void onOpen(final WebSocketSession session)
Invocado cuando la conexión WebSocket se abre exitosamente.
void onBinary(final WebSocketSession session, final ByteBuffer message)
Invocado cuando se recibe un mensaje binario del cliente.
void onClose(final WebSocketSession session, final WebSocketCloseStatus closeStatus)
Invocado cuando el cliente solicita cerrar la conexión.
void onText(final WebSocketSession session, final String message)
Invocado cuando se recibe un mensaje de texto del cliente.
void onError(final WebSocketSession session, final Throwable error)
Invocado cuando ocurre un error en la conexión WebSocket.
GlowrootWebSocketEndpointWrapper(final WebSocketEndpoint delegate)
Set< String > subprotocols()
Devuelve el conjunto de subprotocolos WebSocket que este endpoint acepta.
Define el contrato de un punto final WebSocket.
Representa una sesión WebSocket activa.
String path()
Devuelve el path de la petición WebSocket que originó esta sesión.
String id()
Devuelve el identificador único de esta sesión.