Ether Framework
Unified API docs for Ether modules
Loading...
Searching...
No Matches
WebSocketCloseStatus.java
Go to the documentation of this file.
1package dev.rafex.ether.websocket.core;
2
3/*-
4 * #%L
5 * ether-websocket-core
6 * %%
7 * Copyright (C) 2025 - 2026 Raúl Eduardo González Argote
8 * %%
9 * Permission is hereby granted, free of charge, to any person obtaining a copy
10 * of this software and associated documentation files (the "Software"), to deal
11 * in the Software without restriction, including without limitation the rights
12 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13 * copies of the Software, and to permit persons to whom the Software is
14 * furnished to do so, subject to the following conditions:
15 *
16 * The above copyright notice and this permission notice shall be included in
17 * all copies or substantial portions of the Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25 * THE SOFTWARE.
26 * #L%
27 */
28
29/**
30 * Representa un estado de cierre de una conexión WebSocket conforme a la especificación RFC 6455.
31 * Cada estado se compone de un código numérico y una razón descriptiva.
32 */
33public record WebSocketCloseStatus(int code, String reason) {
34
35 /** Cierre normal: la conexión se completó con éxito. */
36 public static final WebSocketCloseStatus NORMAL = new WebSocketCloseStatus(1000, "normal");
37 /** El punto de partida se aleja (el servidor se apaga o el cliente navega fuera). */
38 public static final WebSocketCloseStatus GOING_AWAY = new WebSocketCloseStatus(1001, "going_away");
39 /** La conexión se cierra debido a una violación del protocolo. */
40 public static final WebSocketCloseStatus PROTOCOL_ERROR = new WebSocketCloseStatus(1002, "protocol_error");
41 /** Se recibió un tipo de mensaje que no es aceptable. */
42 public static final WebSocketCloseStatus NOT_ACCEPTABLE = new WebSocketCloseStatus(1003, "not_acceptable");
43 /** Código reservado: no debe enviarse en frames de cierre. */
44 public static final WebSocketCloseStatus RESERVED_NO_STATUS = new WebSocketCloseStatus(1005, "no_status");
45 /** Código reservado: cierre anormal sin frame de cierre. */
46 public static final WebSocketCloseStatus RESERVED_ABNORMAL = new WebSocketCloseStatus(1006, "abnormal");
47 /** El contenido del frame no es consistente con el tipo esperado. */
48 public static final WebSocketCloseStatus INCONSISTENT_DATA = new WebSocketCloseStatus(1007, "inconsistent_data");
49 /** Violación de política (por ejemplo, acceso denegado). */
50 public static final WebSocketCloseStatus POLICY_VIOLATION = new WebSocketCloseStatus(1008, "policy_violation");
51 /** El mensaje es demasiado grande para ser procesado. */
52 public static final WebSocketCloseStatus MESSAGE_TOO_BIG = new WebSocketCloseStatus(1009, "message_too_big");
53 /** El cliente esperaba una extensión obligatoria que el servidor no negoció. */
54 public static final WebSocketCloseStatus MANDATORY_EXTENSION = new WebSocketCloseStatus(1010, "mandatory_extension");
55 /** El servidor encontró un error inesperado que impide continuar. */
56 public static final WebSocketCloseStatus SERVER_ERROR = new WebSocketCloseStatus(1011, "server_error");
57
59 reason = reason == null ? "" : reason;
60 }
61
62 /**
63 * Crea un estado de cierre con el código y la razón especificados.
64 *
65 * @param code código de cierre numérico según RFC 6455
66 * @param reason descripción legible del motivo de cierre; se normaliza a cadena vacía si es {@code null}
67 * @return nueva instancia de {@code WebSocketCloseStatus}
68 */
69 public static WebSocketCloseStatus of(final int code, final String reason) {
70 return new WebSocketCloseStatus(code, reason);
71 }
72}
record WebSocketCloseStatus(int code, String reason)
Representa un estado de cierre de una conexión WebSocket conforme a la especificación RFC 6455.