aboutsummaryrefslogtreecommitdiff
path: root/lib/websocket/closecode.go
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2019-03-04 16:36:06 +0700
committerShulhan <ms@kilabit.info>2019-03-04 17:00:44 +0700
commitcc01134fc9316c16de286cb221d1505d4f91dd5e (patch)
treed6ce8603152a6a1ba4712d5d540704f0d91ae22e /lib/websocket/closecode.go
parentcb3490c2b6e99b503b1635cce5f5537e554eee90 (diff)
downloadpakakeh.go-cc01134fc9316c16de286cb221d1505d4f91dd5e.tar.xz
websocket: remove global variables for server control frames
This changes introduced new parameters isMasked and close code status to function NewFrameClose; and isMasked to function NewFramePing and NewFramePong. This commit also introduce new type for status code: CloseCode.
Diffstat (limited to 'lib/websocket/closecode.go')
-rw-r--r--lib/websocket/closecode.go76
1 files changed, 76 insertions, 0 deletions
diff --git a/lib/websocket/closecode.go b/lib/websocket/closecode.go
new file mode 100644
index 00000000..9aa7e05a
--- /dev/null
+++ b/lib/websocket/closecode.go
@@ -0,0 +1,76 @@
+// Copyright 2019, Shulhan <ms@kilabit.info>. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package websocket
+
+//
+// CloseCode represent the server close status.
+//
+type CloseCode uint16
+
+//
+// List of close code in network byte order. The name of status is
+// mimicking the "net/http" status code.
+//
+// Endpoints MAY use the following pre-defined status codes when sending
+// a Close frame.
+//
+// Status code 1004-1006, and 1015 is reserved and MUST NOT be used on Close
+// payload.
+//
+// See RFC6455 7.4.1-P45 for more information.
+//
+const (
+ // StatusNormal (1000) indicates a normal closure, meaning that the
+ // purpose for which the connection was established has been
+ // fulfilled.
+ StatusNormal CloseCode = 1000
+
+ // StatusGone (1001) indicates that an endpoint is "going away", such
+ // as a server going down or a browser having navigated away from a
+ // page.
+ StatusGone = 1001
+
+ // StatusBadRequest (1002) indicates that an endpoint is terminating
+ // the connection due to a protocol error.
+ StatusBadRequest = 1002
+
+ // StatusUnsupportedType (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).
+ StatusUnsupportedType = 1003
+
+ // StatusInvalidData (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).
+ StatusInvalidData = 1007
+
+ // StatusForbidden (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.
+ StatusForbidden = 1008
+
+ // StatusRequestEntityTooLarge (1009) indicates that an endpoint is
+ // terminating the connection because it has received a message that
+ // is too big for it to process.
+ StatusRequestEntityTooLarge = 1009
+
+ // StatusBadGateway (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.
+ StatusBadGateway = 1010
+
+ // StatusInternalError or 1011 indicates that a server is terminating
+ // the connection because it encountered an unexpected condition that
+ // prevented it from fulfilling the request.
+ StatusInternalError = 1011
+)