{ } qjs-lws

Constants

All constants below are integers exported on the lws module. They mirror the macros of the same name from libwebsockets.h.

Log levels (LLL_*)

LLL_ERR, LLL_WARN, LLL_NOTICE, LLL_INFO, LLL_DEBUG, LLL_PARSER, LLL_HEADER, LLL_EXT, LLL_CLIENT, LLL_LATENCY, LLL_USER, LLL_THREAD, LLL_COUNT.

Use as a bitmask:

logLevel(LLL_USER | LLL_ERR | LLL_WARN);

Write protocols (LWS_WRITE_*)

ConstantPurpose
LWS_WRITE_TEXTUTF-8 WebSocket frame
LWS_WRITE_BINARYBinary WebSocket frame
LWS_WRITE_CONTINUATIONContinuation fragment
LWS_WRITE_HTTPHTTP body chunk
LWS_WRITE_HTTP_HEADERSHTTP header block
LWS_WRITE_HTTP_HEADERS_CONTINUATIONContinued header block
LWS_WRITE_HTTP_FINALLast HTTP body chunk
LWS_WRITE_PINGPing control frame
LWS_WRITE_PONGPong control frame
LWS_WRITE_BUFLISTUse the wsi's queued buflist
LWS_WRITE_NO_FINDon't set FIN bit
LWS_WRITE_H2_STREAM_ENDClose an HTTP/2 stream
LWS_WRITE_CLIENT_IGNORE_XOR_MASKSkip masking
LWS_WRITE_RAWSend bytes verbatim

Also LWS_PRE — the number of leading bytes lws reserves for framing. The binding handles this for wsi.write() so you do not have to allocate LWS_PRE slack manually.

Context port

CONTEXT_PORT_NO_LISTEN — pass as port for a pure client context. The binding defaults to this when port is omitted from the info object.

Server options (LWS_SERVER_OPTION_*)

A large catalogue, OR'ed into the options field. Highlights:

ConstantPurpose
LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERTRequire mTLS
LWS_SERVER_OPTION_SKIP_SERVER_CANONICAL_NAMESkip CN check
LWS_SERVER_OPTION_ALLOW_NON_SSL_ON_SSL_PORTMixed plaintext/TLS on one port
LWS_SERVER_OPTION_LIBEVUse libev event loop
LWS_SERVER_OPTION_DISABLE_IPV6IPv4 only
LWS_SERVER_OPTION_DISABLE_OS_CA_CERTSDon't load OS CA store
LWS_SERVER_OPTION_PEER_CERT_NOT_REQUIREDDon't require peer cert
LWS_SERVER_OPTION_VALIDATE_UTF8Validate UTF-8 in WS text
LWS_SERVER_OPTION_SSL_ECDHEnable ECDH
LWS_SERVER_OPTION_LIBUVUse libuv event loop
LWS_SERVER_OPTION_REDIRECT_HTTP_TO_HTTPSAuto-redirect plain to TLS
LWS_SERVER_OPTION_DO_SSL_GLOBAL_INITInitialise OpenSSL
LWS_SERVER_OPTION_EXPLICIT_VHOSTSDon't create default vhost
LWS_SERVER_OPTION_UNIX_SOCKListen on a UNIX socket
LWS_SERVER_OPTION_STSHSTS header
LWS_SERVER_OPTION_IPV6_V6ONLY_MODIFYSet IPV6_V6ONLY
LWS_SERVER_OPTION_IPV6_V6ONLY_VALUEValue for the above
LWS_SERVER_OPTION_UV_NO_SIGSEGV_SIGFPE_SPINlibuv: no signal spin
LWS_SERVER_OPTION_JUST_USE_RAW_ORIGINRaw mode
LWS_SERVER_OPTION_FALLBACK_TO_RAWFall back to raw
LWS_SERVER_OPTION_FALLBACK_TO_APPLY_LISTEN_ACCEPT_CONFIGPair with listenAcceptRole/Protocol
LWS_SERVER_OPTION_LIBEVENTUse libevent
LWS_SERVER_OPTION_ONLY_RAWRaw-only listener
LWS_SERVER_OPTION_ADOPT_APPLY_LISTEN_ACCEPT_CONFIGApply listen config on adopt
LWS_SERVER_OPTION_ALLOW_LISTEN_SHARESO_REUSEPORT
LWS_SERVER_OPTION_CREATE_VHOST_SSL_CTXCreate SSL context per vhost
LWS_SERVER_OPTION_SKIP_PROTOCOL_INITSkip PROTOCOL_INIT calls
LWS_SERVER_OPTION_IGNORE_MISSING_CERTDon't fail on missing cert
LWS_SERVER_OPTION_VHOST_UPG_STRICT_HOST_CHECKStrict Host header check
LWS_SERVER_OPTION_HTTP_HEADERS_SECURITY_BEST_PRACTICES_ENFORCEHardened headers
LWS_SERVER_OPTION_ALLOW_HTTP_ON_HTTPS_LISTENERMixed mode
LWS_SERVER_OPTION_FAIL_UPON_UNABLE_TO_BINDHard-fail on bind
LWS_SERVER_OPTION_H2_JUST_FIX_WINDOW_UPDATE_OVERFLOWWorkaround
LWS_SERVER_OPTION_VH_H2_HALF_CLOSED_LONG_POLLLong-poll over H2
LWS_SERVER_OPTION_GLIBUse glib loop
LWS_SERVER_OPTION_H2_PRIOR_KNOWLEDGEH2 prior knowledge
LWS_SERVER_OPTION_NO_LWS_SYSTEM_STATESSkip system states
LWS_SERVER_OPTION_SS_PROXYSecure-streams proxy
LWS_SERVER_OPTION_SDEVENTUse sdevent loop
LWS_SERVER_OPTION_ULOOPUse uloop
LWS_SERVER_OPTION_DISABLE_TLS_SESSION_CACHENo TLS session cache
LWS_ILLEGAL_HTTP_CONTENT_LENSentinel "unknown content-length"

Mount protocol (LWSMPRO_*)

LWSMPRO_HTTP, LWSMPRO_HTTPS, LWSMPRO_FILE, LWSMPRO_CGI, LWSMPRO_REDIR_HTTP, LWSMPRO_REDIR_HTTPS, LWSMPRO_CALLBACK, LWSMPRO_NO_MOUNT.

See mounts.md for their meaning.

Client connect flags (LCCSCF_*)

USE_SSL, ALLOW_SELFSIGNED, SKIP_SERVER_CERT_HOSTNAME_CHECK, ALLOW_EXPIRED, ALLOW_INSECURE, H2_QUIRK_NGHTTP2_END_STREAM, H2_QUIRK_OVERFLOWS_TXCR, H2_AUTH_BEARER, H2_HEXIFY_AUTH_TOKEN, H2_MANUAL_RXFLOW, HTTP_MULTIPART_MIME, HTTP_X_WWW_FORM_URLENCODED, HTTP_NO_FOLLOW_REDIRECT, HTTP_NO_CACHE_CONTROL, ALLOW_REUSE_ADDR, IPV6_PREFER_PUBLIC_ADDR, PIPELINE, MUXABLE_STREAM, H2_PRIOR_KNOWLEDGE, WAKE_SUSPEND__VALIDITY, PRIORITIZE_READS, SECSTREAM_CLIENT, SECSTREAM_PROXY_LINK, SECSTREAM_PROXY_ONWARD, IP_LOW_LATENCY, IP_HIGH_THROUGHPUT, IP_HIGH_RELIABILITY, IP_LOW_COST, CONMON, ACCEPT_TLS_DOWNGRADE_REDIRECTS, CACHE_COOKIES.

See tls.md for usage, and http-client.md for PIPELINE / MUXABLE_STREAM specifically.

HTTP header tokens (WSI_TOKEN_*)

The full enum lws_token_indexes is exported. Notable groups:

  • Method/URI: WSI_TOKEN_GET_URI, WSI_TOKEN_POST_URI, WSI_TOKEN_OPTIONS_URI (optional), WSI_TOKEN_PUT_URI, WSI_TOKEN_PATCH_URI, WSI_TOKEN_DELETE_URI, WSI_TOKEN_HEAD_URI, WSI_TOKEN_CONNECT.
  • Common request headers: WSI_TOKEN_HOST, WSI_TOKEN_CONNECTION, WSI_TOKEN_UPGRADE, WSI_TOKEN_ORIGIN, WSI_TOKEN_HTTP_USER_AGENT, WSI_TOKEN_HTTP_COOKIE, WSI_TOKEN_HTTP_ACCEPT, WSI_TOKEN_HTTP_ACCEPT_ENCODING, …
  • Response headers: WSI_TOKEN_HTTP_SET_COOKIE, WSI_TOKEN_HTTP_LOCATION, WSI_TOKEN_HTTP_CONTENT_TYPE, WSI_TOKEN_HTTP_CONTENT_LENGTH, …
  • WebSocket-specific (when built with LWS_ROLE_WS): WSI_TOKEN_KEY, WSI_TOKEN_VERSION, WSI_TOKEN_PROTOCOL, WSI_TOKEN_EXTENSIONS, WSI_TOKEN_ACCEPT.
  • HTTP/2 pseudo-headers: WSI_TOKEN_HTTP_COLON_AUTHORITY, _COLON_METHOD, _COLON_PATH, _COLON_SCHEME, _COLON_STATUS.
  • Sentinels: WSI_TOKEN_COUNT, WSI_TOKEN_NAME_PART, WSI_TOKEN_SKIPPING*, WSI_PARSING_COMPLETE, WSI_INIT_TOKEN_MUXURL.

getTokenName(WSI_TOKEN_HOST) returns the literal header string ("Host") — useful for debugging.

HTTP methods (LWSHUMETH_*)

LWSHUMETH_GET, _POST, _OPTIONS, _PUT, _PATCH, _DELETE, _CONNECT, _HEAD, _COLON_PATH.