summaryrefslogtreecommitdiff
path: root/meta/3rd/OpenResty/library/resty/websocket/protocol.lua
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2022-08-13 01:23:32 +0800
committer最萌小汐 <sumneko@hotmail.com>2022-08-13 01:23:32 +0800
commit04fa96b7c0abba4d7cca03ed12ff3b65b3912e01 (patch)
treec0c8a2c0e92d0580280f838ba475875c7f82a73c /meta/3rd/OpenResty/library/resty/websocket/protocol.lua
parentc30c5c2e267f6917600afe4f19e1e0d674bad9c6 (diff)
downloadlua-language-server-04fa96b7c0abba4d7cca03ed12ff3b65b3912e01.zip
fix #1431
Diffstat (limited to 'meta/3rd/OpenResty/library/resty/websocket/protocol.lua')
-rw-r--r--meta/3rd/OpenResty/library/resty/websocket/protocol.lua173
1 files changed, 173 insertions, 0 deletions
diff --git a/meta/3rd/OpenResty/library/resty/websocket/protocol.lua b/meta/3rd/OpenResty/library/resty/websocket/protocol.lua
new file mode 100644
index 00000000..23591928
--- /dev/null
+++ b/meta/3rd/OpenResty/library/resty/websocket/protocol.lua
@@ -0,0 +1,173 @@
+---@meta
+
+---@class resty.websocket.protocol
+local protocol = {
+ _VERSION = "0.09",
+}
+
+--- websocket object
+--- https://github.com/openresty/lua-resty-websocket
+---
+---@class resty.websocket : table
+---@field sock tcpsock
+---@field fatal boolean
+---@field max_payload_len number
+---@field send_masked boolean
+local websocket = {}
+
+---@param ms integer sets the timeout delay (in milliseconds) for the network-related operations
+function websocket:set_timeout(ms) end
+
+---Sends the text argument out as an unfragmented data frame of the text type.
+---
+---Returns the number of bytes that have actually been sent on the TCP level.
+---
+---In case of errors, returns nil and a string describing the error.
+---
+---@param text string
+---@return integer? bytes
+---@return string? error
+function websocket:send_text(text) end
+
+---Sends the data argument out as an unfragmented data frame of the binary type.
+---
+---Returns the number of bytes that have actually been sent on the TCP level.
+---
+---In case of errors, returns nil and a string describing the error.
+---
+---@param data string
+---@return integer? bytes
+---@return string? error
+function websocket:send_binary(data) end
+
+---Sends out a ping frame with an optional message specified by the msg argument.
+---Returns the number of bytes that have actually been sent on the TCP level.
+---
+---In case of errors, returns nil and a string describing the error.
+---
+---Note that this method does not wait for a pong frame from the remote end.
+---
+---@param msg? string
+---@return integer? bytes
+---@return string? error
+function websocket:send_ping(msg) end
+
+---Sends out a pong frame with an optional message specified by the msg argument.
+---Returns the number of bytes that have actually been sent on the TCP level.
+---
+---In case of errors, returns nil and a string describing the error.
+---@param msg? string
+---@return integer? bytes
+---@return string? error
+function websocket:send_pong(msg) end
+
+---Sends out a close frame with an optional status code and a message.
+---
+---In case of errors, returns nil and a string describing the error.
+---
+---For a list of valid status code, see the following document:
+---
+---http://tools.ietf.org/html/rfc6455#section-7.4.1
+---
+---Note that this method does not wait for a close frame from the remote end.
+---@param code? integer
+---@param msg? string
+---@return integer? bytes
+---@return string? error
+function websocket:send_close(code, msg) end
+
+---Sends out a raw websocket frame by specifying the fin field (boolean value), the opcode, and the payload.
+---
+---For a list of valid opcode, see
+---
+---http://tools.ietf.org/html/rfc6455#section-5.2
+---
+---In case of errors, returns nil and a string describing the error.
+---
+---To control the maximal payload length allowed, you can pass the max_payload_len option to the new constructor.
+---
+---To control whether to send masked frames, you can pass true to the send_masked option in the new constructor method. By default, unmasked frames are sent.
+---@param fin boolean
+---@param opcode resty.websocket.protocol.opcode
+---@param payload string
+---@return integer? bytes
+---@return string? error
+function websocket:send_frame(fin, opcode, payload) end
+
+---Receives a WebSocket frame from the wire.
+---
+---In case of an error, returns two nil values and a string describing the error.
+---
+---The second return value is always the frame type, which could be one of continuation, text, binary, close, ping, pong, or nil (for unknown types).
+---
+---For close frames, returns 3 values: the extra status message (which could be an empty string), the string "close", and a Lua number for the status code (if any). For possible closing status codes, see
+---
+---http://tools.ietf.org/html/rfc6455#section-7.4.1
+---
+---For other types of frames, just returns the payload and the type.
+---
+---For fragmented frames, the err return value is the Lua string "again".
+---
+---@return string? data
+---@return resty.websocket.protocol.type? typ
+---@return string|integer? error_or_status_code
+function websocket:recv_frame() end
+
+---@class resty.websocket.new.opts : table
+---@field max_payload_len integer maximal length of payload allowed when sending and receiving WebSocket frames
+---@field send_masked boolean whether to send out masked WebSocket frames
+---@field timeout integer network timeout threshold in milliseconds
+
+
+--- Websocket op code
+---
+--- Defines the interpretation of the payload data.
+---
+--- See RFC 6455 section 5.2
+---
+---@alias resty.websocket.protocol.opcode
+---| '0x0' # continuation
+---| '0x1' # text
+---| '0x2' # binary
+---| '0x8' # close
+---| '0x9' # ping
+---| '0xa' # pong
+
+---@alias resty.websocket.protocol.type
+---| '"continuation"'
+---| '"text"'
+---| '"binary"'
+---| '"close"'
+---| '"ping"'
+---| '"pong"'
+
+--- Builds a raw WebSocket frame.
+---@param fin boolean
+---@param opcode resty.websocket.protocol.opcode
+---@param payload_len integer
+---@param payload string
+---@param masking boolean
+---@return string
+function protocol.build_frame(fin, opcode, payload_len, payload, masking) end
+
+--- Sends a raw WebSocket frame.
+---@param sock tcpsock
+---@param fin boolean
+---@param opcode resty.websocket.protocol.opcode
+---@param payload string
+---@param max_payload_len interger
+---@param masking boolean
+---@return bytes? number
+---@return string? error
+function protocol.send_frame(sock, fin, opcode, payload, max_payload_len, masking) end
+
+--- Receives a WebSocket frame from the wire.
+---@param sock tcpsock
+---@param max_payload_len interger
+---@param force_masking boolean
+---@return string? data
+---@return resty.websocket.protocol.type? typ
+---@return string? error
+function protocol.recv_frame(sock, max_payload_len, force_masking) end
+
+return protocol \ No newline at end of file