View Javadoc

1   //
2   //  ========================================================================
3   //  Copyright (c) 1995-2016 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       * Abnormal Close is a synonym for {@link #NO_CLOSE}, used to indicate a close
81       * condition where no close frame was processed from the remote side.
82       */
83      public final static int ABNORMAL = NO_CLOSE;
84  
85      /**
86       * 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
87       * message (e.g., non-UTF-8 [<a href="https://tools.ietf.org/html/rfc3629">RFC3629</a>] data within a text message).
88       * <p>
89       * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>.
90       */
91      public final static int BAD_PAYLOAD = 1007;
92  
93      /**
94       * 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
95       * 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
96       * policy.
97       * <p>
98       * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>.
99       */
100     public final static int POLICY_VIOLATION = 1008;
101 
102     /**
103      * 1009 indicates that an endpoint is terminating the connection because it has received a message that is too big for it to process.
104      * <p>
105      * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>.
106      */
107     public final static int MESSAGE_TOO_LARGE = 1009;
108 
109     /**
110      * 1010 indicates that an endpoint (client) is terminating the connection because it has expected the server to negotiate one or more extension, but the
111      * 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
112      * of the Close frame. Note that this status code is not used by the server, because it can fail the WebSocket handshake instead.
113      * <p>
114      * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>.
115      */
116     public final static int REQUIRED_EXTENSION = 1010;
117 
118     /**
119      * 1011 indicates that a server is terminating the connection because it encountered an unexpected condition that prevented it from fulfilling the request.
120      * <p>
121      * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>.
122      */
123     public final static int SERVER_ERROR = 1011;
124 
125     /**
126      * 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.
127      * <p>
128      * See <a href="https://www.ietf.org/mail-archive/web/hybi/current/msg09649.html">[hybi] Additional WebSocket Close Error Codes</a>
129      */
130     public final static int SERVICE_RESTART = 1012;
131 
132     /**
133      * 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
134      * reconnect to the same IP upon user action.
135      * <p>
136      * See <a href="https://www.ietf.org/mail-archive/web/hybi/current/msg09649.html">[hybi] Additional WebSocket Close Error Codes</a>
137      */
138     public final static int TRY_AGAIN_LATER = 1013;
139 
140     /**
141      * 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
142      * 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).
143      * <p>
144      * See <a href="https://tools.ietf.org/html/rfc6455#section-7.4.1">RFC 6455, Section 7.4.1 Defined Status Codes</a>.
145      */
146     public final static int FAILED_TLS_HANDSHAKE = 1015;
147 }