From db2570c2ee54f8af08cc9a7eef8bee413717ccfc Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 26 Jul 2012 10:30:12 -0700 Subject: [PATCH] 380928 - Implement new websocket close code --- .../jetty/websocket/api/StatusCode.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/api/StatusCode.java b/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/api/StatusCode.java index 9bdab0372ac..9c3c98cbe6c 100644 --- a/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/api/StatusCode.java +++ b/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/api/StatusCode.java @@ -16,7 +16,8 @@ package org.eclipse.jetty.websocket.api; /** - * The RFC 6455 specified status codes. + * The RFC 6455 specified status codes and IANA: WebSocket Close Code Number Registry */ public class StatusCode { @@ -26,18 +27,21 @@ public class StatusCode * See RFC 6455, Section 7.4.1 Defined Status Codes. */ public final static int NORMAL = 1000; + /** * 1001 indicates that an endpoint is "going away", such as a server going down or a browser having navigated away from a page. *

* See RFC 6455, Section 7.4.1 Defined Status Codes. */ public final static int SHUTDOWN = 1001; + /** * 1002 indicates that an endpoint is terminating the connection due to a protocol error. *

* See RFC 6455, Section 7.4.1 Defined Status Codes. */ public final static int PROTOCOL = 1002; + /** * 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). @@ -45,12 +49,14 @@ public class StatusCode * See RFC 6455, Section 7.4.1 Defined Status Codes. */ public final static int BAD_DATA = 1003; + /** * Reserved. The specific meaning might be defined in the future. *

* See RFC 6455, Section 7.4.1 Defined Status Codes. */ public final static int UNDEFINED = 1004; + /** * 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. @@ -58,6 +64,7 @@ public class StatusCode * See RFC 6455, Section 7.4.1 Defined Status Codes. */ public final static int NO_CODE = 1005; + /** * 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. @@ -65,6 +72,7 @@ public class StatusCode * See RFC 6455, Section 7.4.1 Defined Status Codes. */ public final static int NO_CLOSE = 1006; + /** * 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 [RFC3629] data within a text message). @@ -72,6 +80,7 @@ public class StatusCode * See RFC 6455, Section 7.4.1 Defined Status Codes. */ public final static int BAD_PAYLOAD = 1007; + /** * 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 @@ -80,12 +89,14 @@ public class StatusCode * See RFC 6455, Section 7.4.1 Defined Status Codes. */ public final static int POLICY_VIOLATION = 1008; + /** * 1009 indicates that an endpoint is terminating the connection because it has received a message that is too big for it to process. *

* See RFC 6455, Section 7.4.1 Defined Status Codes. */ public final static int MESSAGE_TOO_LARGE = 1009; + /** * 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 @@ -94,12 +105,29 @@ public class StatusCode * See RFC 6455, Section 7.4.1 Defined Status Codes. */ public final static int REQUIRED_EXTENSION = 1010; + /** * 1011 indicates that a server is terminating the connection because it encountered an unexpected condition that prevented it from fulfilling the request. *

* See RFC 6455, Section 7.4.1 Defined Status Codes. */ public final static int SERVER_ERROR = 1011; + + /** + * 1012 indicates that the service is restarted. a client may reconnect, and if it choses to do, should reconnect using a randomized delay of 5 - 30s. + *

+ * See [hybi] Additional WebSocket Close Error Codes + */ + public final static int SERVICE_RESTART = 1012; + + /** + * 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 + * reconnect to the same IP upon user action. + *

+ * See [hybi] Additional WebSocket Close Error Codes + */ + public final static int TRY_AGAIN_LATER = 1013; + /** * 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).