1 // 2 // ======================================================================== 3 // Copyright (c) 1995-2013 Mort Bay Consulting Pty. Ltd. 4 // ------------------------------------------------------------------------ 5 // All rights reserved. This program and the accompanying materials 6 // are made available under the terms of the Eclipse Public License v1.0 7 // and Apache License v2.0 which accompanies this distribution. 8 // 9 // The Eclipse Public License is available at 10 // http://www.eclipse.org/legal/epl-v10.html 11 // 12 // The Apache License v2.0 is available at 13 // http://www.opensource.org/licenses/apache2.0.php 14 // 15 // You may elect to redistribute this code under either of these licenses. 16 // ======================================================================== 17 // 18 19 package org.eclipse.jetty.websocket.api; 20 21 /** 22 * The <a href="https://tools.ietf.org/html/rfc6455#section-7.4">RFC 6455 specified status codes</a> and <a 23 * href="https://www.iana.org/assignments/websocket/websocket.xml#close-code-number-rules">IANA: WebSocket Close Code Number Registry</a> 24 */ 25 public class StatusCode 26 { 27 /** 28 * 1000 indicates a normal closure, meaning that the purpose for which the connection was established has been fulfilled. 29 * <p> 30 * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>. 31 */ 32 public final static int NORMAL = 1000; 33 34 /** 35 * 1001 indicates that an endpoint is "going away", such as a server going down or a browser having navigated away from a page. 36 * <p> 37 * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>. 38 */ 39 public final static int SHUTDOWN = 1001; 40 41 /** 42 * 1002 indicates that an endpoint is terminating the connection due to a protocol error. 43 * <p> 44 * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>. 45 */ 46 public final static int PROTOCOL = 1002; 47 48 /** 49 * 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 50 * only text data MAY send this if it receives a binary message). 51 * <p> 52 * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>. 53 */ 54 public final static int BAD_DATA = 1003; 55 56 /** 57 * Reserved. The specific meaning might be defined in the future. 58 * <p> 59 * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>. 60 */ 61 public final static int UNDEFINED = 1004; 62 63 /** 64 * 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 65 * a status code to indicate that no status code was actually present. 66 * <p> 67 * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>. 68 */ 69 public final static int NO_CODE = 1005; 70 71 /** 72 * 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 73 * a status code to indicate that the connection was closed abnormally, e.g., without sending or receiving a Close control frame. 74 * <p> 75 * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>. 76 */ 77 public final static int NO_CLOSE = 1006; 78 79 /** 80 * 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 81 * message (e.g., non-UTF-8 [<a href="https://tools.ietf.org/html/rfc3629">RFC3629</a>] data within a text message). 82 * <p> 83 * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>. 84 */ 85 public final static int BAD_PAYLOAD = 1007; 86 87 /** 88 * 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 89 * 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 90 * policy. 91 * <p> 92 * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>. 93 */ 94 public final static int POLICY_VIOLATION = 1008; 95 96 /** 97 * 1009 indicates that an endpoint is terminating the connection because it has received a message that is too big for it to process. 98 * <p> 99 * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>. 100 */ 101 public final static int MESSAGE_TOO_LARGE = 1009; 102 103 /** 104 * 1010 indicates that an endpoint (client) is terminating the connection because it has expected the server to negotiate one or more extension, but the 105 * 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 106 * of the Close frame. Note that this status code is not used by the server, because it can fail the WebSocket handshake instead. 107 * <p> 108 * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>. 109 */ 110 public final static int REQUIRED_EXTENSION = 1010; 111 112 /** 113 * 1011 indicates that a server is terminating the connection because it encountered an unexpected condition that prevented it from fulfilling the request. 114 * <p> 115 * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>. 116 */ 117 public final static int SERVER_ERROR = 1011; 118 119 /** 120 * 1012 indicates that the service is restarted. a client may reconnect, and if it chooses to do, should reconnect using a randomized delay of 5 - 30s. 121 * <p> 122 * See <a href="https://www.ietf.org/mail-archive/web/hybi/current/msg09649.html">[hybi] Additional WebSocket Close Error Codes</a> 123 */ 124 public final static int SERVICE_RESTART = 1012; 125 126 /** 127 * 1013 indicates that the service is experiencing overload. a client should only connect to a different IP (when there are multiple for the target) or 128 * reconnect to the same IP upon user action. 129 * <p> 130 * See <a href="https://www.ietf.org/mail-archive/web/hybi/current/msg09649.html">[hybi] Additional WebSocket Close Error Codes</a> 131 */ 132 public final static int TRY_AGAIN_LATER = 1013; 133 134 /** 135 * 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 136 * 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). 137 * <p> 138 * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>. 139 */ 140 public final static int FAILED_TLS_HANDSHAKE = 1015; 141 }