This article is in need of a technical review.
A CloseEvent is sent to clients using WebSockets when the connection is closed. This is delivered to the listener indicated by the WebSocket object's onclose attribute.
Attributes
| Attribute | Type | Description |
code |
unsigned long |
The WebSocket connection close code provided by the server. See Close codes for possible values. |
reason |
DOMString |
A string indicating the reason the server closed the connection. This is specific to the particular server and sub-protocol. |
wasClean |
boolean |
Indicates whether or not the connection was cleanly closed. |
Close codes
The following values are permitted status codes.
| Status code | Name | Description |
| 0-999 | Reserved and not used. | |
| 1000 | CLOSE_NORMAL |
Normal closure; the connection successfully completed whatever purpose for which it was created. |
| 1001 | CLOSE_GOING_AWAY |
The endpoint is going away, either because of a server failure or because the browser is navigating away from the page that opened the connection. |
| 1002 | CLOSE_PROTOCOL_ERROR |
The endpoint is terminating the connection due to a protocol error. |
| 1003 | CLOSE_UNSUPPORTED |
The connection is being terminated because the endpoint received data of a type it cannot accept (for example, a text-only endpoint received binary data). |
| 1004 | Reserved. A meaning might be defined in the future. | |
| 1005 | CLOSE_NO_STATUS |
Reserved. Indicates that no status code was provided even though one was expected. |
| 1006 | CLOSE_ABNORMAL |
Reserved. Used to indicate that a connection was closed abnormally (that is, with no close frame being sent) when a status code is expected. |
| 1007 | The endpoint is terminating the connection because a message was received that contained inconsistent data (e.g., non-UTF-8 data within a text message). | |
| 1008 | The endpoint is terminating the connection because it received a message that violates it's policy. This is a generic status code, used when codes 1003 and 1009 are not suitable. | |
| 1009 | CLOSE_TOO_LARGE | The endpoint is terminating the connection because a data frame was received that is too large. |
| 1010 | The client is terminating the connection because it expected the server to negotiate one or more extension, but the server didn't. | |
| 1011 | The server is terminating the connection because it encountered an unexpected condition that prevented it from fulfilling the request. | |
| 1012-1014 | Reserved for future use by the WebSocket standard. | |
| 1015 | Reserved. Indicates that the connection was closed due to a failure to perform a TLS handshake (e.g., the server certificate can't be verified). | |
| 1016-1999 | Reserved for future use by the WebSocket standard. | |
| 2000-2999 | Reserved for use by WebSocket extensions. | |
| 3000-3999 | Available for use by libraries and frameworks. May not be used by applications. | |
| 4000-4999 | Available for use by applications. |
See also
Browser compatibility
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Basic support | ? | 8.0 (8.0) | ? | ? | ? |
| Feature | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|
| Basic support | ? | 8.0 (8.0) | ? | ? | ? |
Gecko notes
Prior to Gecko 8.0 (Firefox 8.0 / Thunderbird 8.0 / SeaMonkey 2.5), Gecko sent the WebSocket "close" event to the listener as a simple event. Support for CloseEvent was implemented in Gecko 8.0.
Prior to Gecko 12.0 (Firefox 12.0 / Thunderbird 12.0 / SeaMonkey 2.9), Gecko reported the close code CLOSE_NORMAL when the channel was closed due to an unexpected error, or if it was closed due to an error condition that the specification doesn't cover. Now CLOSE_GOING_AWAY is reported instead.