173 lines
5.9 KiB
Lua
173 lines
5.9 KiB
Lua
---@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 |