package ameba.websocket; import javax.websocket.CloseReason; /** * <p>CloseReasons class.</p> * * @author icode * */ public enum CloseReasons { /** * 1000 indicates a normal closure, meaning that the purpose for * which the connection was established has been fulfilled. */ NORMAL_CLOSURE(CloseReason.CloseCodes.NORMAL_CLOSURE, "Normal closure."), /** * 1001 indicates that an endpoint is "going away", such as a server * going down or a browser having navigated away from a page. */ GOING_AWAY(CloseReason.CloseCodes.GOING_AWAY, "Going away."), /** * 1002 indicates that an endpoint is terminating the connection due * to a protocol error. */ PROTOCOL_ERROR(CloseReason.CloseCodes.PROTOCOL_ERROR, "Protocol error."), /** * 1003 indicates that an endpoint is terminating the connection * because it has received a type of data it cannot accept (e.g., an * endpoint that understands only text data MAY send this if it * receives a binary message). */ CANNOT_ACCEPT(CloseReason.CloseCodes.CANNOT_ACCEPT, "Cannot accept."), /** * Reserved. The specific meaning might be defined in the future. */ RESERVED(CloseReason.CloseCodes.RESERVED, "Reserved."), /** * 1005 is a reserved value and MUST NOT be set as a status code in a * Close control frame by an endpoint. It is designated for use in * applications expecting a status code to indicate that no status * code was actually present. */ NO_STATUS_CODE(CloseReason.CloseCodes.NO_STATUS_CODE, "No status code."), /** * 1006 is a reserved value and MUST NOT be set as a status code in a * Close control frame by an endpoint. It is designated for use in * applications expecting a status code to indicate that the * connection was closed abnormally, e.g., without sending or * receiving a Close control frame. */ CLOSED_ABNORMALLY(CloseReason.CloseCodes.CLOSED_ABNORMALLY, "Closed abnormally."), /** * 1007 indicates that an endpoint is terminating the connection * because it has received data within a message that was not * consistent with the type of the message (e.g., non-UTF-8 * data within a text message). */ NOT_CONSISTENT(CloseReason.CloseCodes.NOT_CONSISTENT, "Not consistent."), /** * 1008 indicates that an endpoint is terminating the connection * because it has received a message that violates its policy. This * is a generic status code that can be returned when there is no * other more suitable status code (e.g., 1003 or 1009) or if there * is a need to hide specific details about the policy. */ VIOLATED_POLICY(CloseReason.CloseCodes.VIOLATED_POLICY, "Violated policy."), /** * 1009 indicates that an endpoint is terminating the connection * because it has received a message that is too big for it to * process. */ TOO_BIG(CloseReason.CloseCodes.TOO_BIG, "Too big."), /** * 1010 indicates that an endpoint (client) is terminating the * connection because it has expected the server to negotiate one or * more extension, but the server didn't return them in the response * message of the WebSocket handshake. The list of extensions that * are needed SHOULD appear in the /reason/ part of the Close frame. * Note that this status code is not used by the server, because it * can fail the WebSocket handshake instead. */ NO_EXTENSION(CloseReason.CloseCodes.NO_EXTENSION, "No extension."), /** * 1011 indicates that a server is terminating the connection because * it encountered an unexpected condition that prevented it from * fulfilling the request. */ UNEXPECTED_CONDITION(CloseReason.CloseCodes.UNEXPECTED_CONDITION, "Unexpected condition."), /** * 1012 indicates that the service will be restarted. */ SERVICE_RESTART(CloseReason.CloseCodes.SERVICE_RESTART, "Service restart."), /** * 1013 indicates that the service is experiencing overload */ TRY_AGAIN_LATER(CloseReason.CloseCodes.TRY_AGAIN_LATER, "Try again later."), /** * 1015 is a reserved value and MUST NOT be set as a status code in a * Close control frame by an endpoint. It is designated for use in * applications expecting a status code to indicate that the * connection was closed due to a failure to perform a TLS handshake * (e.g., the server certificate can't be verified). */ TLS_HANDSHAKE_FAILURE(CloseReason.CloseCodes.TLS_HANDSHAKE_FAILURE, "TLS handshake failure."); private final CloseReason closeReason; CloseReasons(CloseReason.CloseCode closeCode, String reasonPhrase) { this.closeReason = new CloseReason(closeCode, reasonPhrase); } /** * Get close reason. * * @return close reason represented by this value; */ public CloseReason getCloseReason() { return closeReason; } }