{ } qjs-lws

Callback reasons

Every LWS_CALLBACK_* reason is exposed as an integer constant on the lws module and as a camelCased name (via getCallbackName). Use the named handlers on your protocol descriptor for clarity:

{
  name: 'http',
  onHttp(wsi, uri) { … },
  onClosedHttp(wsi) { … },
}

The list below mirrors lws_callback_names[] in lws.c and documents the JS arguments after wsi.

WebSocket server

ConstantHandlerArguments
LWS_CALLBACK_ESTABLISHEDonEstablished(sslPtrString, len)
LWS_CALLBACK_RECEIVEonReceive(data, len [, frame])
LWS_CALLBACK_RECEIVE_PONGonReceivePong(data, len)
LWS_CALLBACK_SERVER_WRITEABLEonServerWriteable()
LWS_CALLBACK_CLOSEDonClosed()
LWS_CALLBACK_WS_PEER_INITIATED_CLOSEonWsPeerInitiatedClose(code, reasonString)
LWS_CALLBACK_WS_SERVER_BIND_PROTOCOLonWsServerBindProtocol()
LWS_CALLBACK_WS_SERVER_DROP_PROTOCOLonWsServerDropProtocol()
LWS_CALLBACK_FILTER_PROTOCOL_CONNECTIONonFilterProtocolConnection(data, len)
LWS_CALLBACK_CONFIRM_EXTENSION_OKAYonConfirmExtensionOkay(name)
LWS_CALLBACK_WS_EXT_DEFAULTSonWsExtDefaults()

WebSocket client

ConstantHandlerArguments
LWS_CALLBACK_CLIENT_ESTABLISHEDonClientEstablished()
LWS_CALLBACK_CLIENT_CONNECTION_ERRORonClientConnectionError(message, errno)
LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISHonClientFilterPreEstablish(data, len)
LWS_CALLBACK_CLIENT_RECEIVEonClientReceive(data, len [, frame])
LWS_CALLBACK_CLIENT_RECEIVE_PONGonClientReceivePong(data, len)
LWS_CALLBACK_CLIENT_WRITEABLEonClientWriteable()
LWS_CALLBACK_CLIENT_CLOSEDonClientClosed()
LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADERonClientAppendHandshakeHeader(buf, lenArray)
LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTEDonClientConfirmExtensionSupported(name)
LWS_CALLBACK_WS_CLIENT_BIND_PROTOCOLonWsClientBindProtocol()
LWS_CALLBACK_WS_CLIENT_DROP_PROTOCOLonWsClientDropProtocol()

The frame argument to onReceive/onClientReceive is only present for multi-fragment messages. It is a `{ multifragment: true, first, final }` descriptor — use it to reassemble big frames.

HTTP server

ConstantHandlerArguments
LWS_CALLBACK_HTTPonHttp(uri)
LWS_CALLBACK_HTTP_BODYonHttpBody(data, len)
LWS_CALLBACK_HTTP_BODY_COMPLETIONonHttpBodyCompletion()
LWS_CALLBACK_HTTP_FILE_COMPLETIONonHttpFileCompletion()
LWS_CALLBACK_HTTP_WRITEABLEonHttpWriteable()
LWS_CALLBACK_HTTP_BIND_PROTOCOLonHttpBindProtocol()
LWS_CALLBACK_HTTP_DROP_PROTOCOLonHttpDropProtocol()
LWS_CALLBACK_HTTP_CONFIRM_UPGRADEonHttpConfirmUpgrade(typeString)
LWS_CALLBACK_HTTP_PMOonHttpPmo(data, len)
LWS_CALLBACK_FILTER_NETWORK_CONNECTIONonFilterNetworkConnection(sslPtr)
LWS_CALLBACK_FILTER_HTTP_CONNECTIONonFilterHttpConnection(urlString)
LWS_CALLBACK_CHECK_ACCESS_RIGHTSonCheckAccessRights(uri, authMask)uri is a read-only ArrayBuffer, authMask the mount's authentication_mode bitmask (not a length)
LWS_CALLBACK_ADD_HEADERSonAddHeaders(buf, lenArray)
LWS_CALLBACK_PROCESS_HTMLonProcessHtml(buf, lenArray)
LWS_CALLBACK_CLOSED_HTTPonClosedHttp()
LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATEDonServerNewClientInstantiated()
LWS_CALLBACK_VERIFY_BASIC_AUTHORIZATIONonVerifyBasicAuthorization(authString)
LWS_CALLBACK_SESSION_INFOonSessionInfo(buf, len)

HTTP client

ConstantHandlerArguments
LWS_CALLBACK_ESTABLISHED_CLIENT_HTTPonEstablishedClientHttp(responseCode)
LWS_CALLBACK_CLIENT_HTTP_WRITEABLEonClientHttpWriteable()
LWS_CALLBACK_RECEIVE_CLIENT_HTTPonReceiveClientHttp()
LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READonReceiveClientHttpRead(data, len)
LWS_CALLBACK_COMPLETED_CLIENT_HTTPonCompletedClientHttp()
LWS_CALLBACK_CLOSED_CLIENT_HTTPonClosedClientHttp()
LWS_CALLBACK_CLIENT_HTTP_BIND_PROTOCOLonClientHttpBindProtocol()
LWS_CALLBACK_CLIENT_HTTP_DROP_PROTOCOLonClientHttpDropProtocol()
LWS_CALLBACK_CLIENT_HTTP_REDIRECTonClientHttpRedirect(url, status)
LWS_CALLBACK_WSI_TX_CREDIT_GETonWsiTxCreditGet()

Raw socket

ConstantHandlerArguments
LWS_CALLBACK_RAW_ADOPTonRawAdopt()
LWS_CALLBACK_RAW_CONNECTEDonRawConnected()
LWS_CALLBACK_RAW_RXonRawRx(data, len)
LWS_CALLBACK_RAW_WRITEABLEonRawWriteable()
LWS_CALLBACK_RAW_CLOSEonRawClose(errno)
LWS_CALLBACK_RAW_ADOPT_FILEonRawAdoptFile()
LWS_CALLBACK_RAW_RX_FILEonRawRxFile(data, len)
LWS_CALLBACK_RAW_WRITEABLE_FILEonRawWriteableFile()
LWS_CALLBACK_RAW_CLOSE_FILEonRawCloseFile()
LWS_CALLBACK_RAW_SKT_BIND_PROTOCOLonRawSktBindProtocol()
LWS_CALLBACK_RAW_SKT_DROP_PROTOCOLonRawSktDropProtocol()
LWS_CALLBACK_RAW_FILE_BIND_PROTOCOLonRawFileBindProtocol()
LWS_CALLBACK_RAW_FILE_DROP_PROTOCOLonRawFileDropProtocol()
LWS_CALLBACK_RAW_PROXY_CLI_RXonRawProxyCliRx(data, len)
LWS_CALLBACK_RAW_PROXY_SRV_RXonRawProxySrvRx(data, len)
LWS_CALLBACK_RAW_PROXY_CLI_CLOSEonRawProxyCliClose()
LWS_CALLBACK_RAW_PROXY_SRV_CLOSEonRawProxySrvClose()
LWS_CALLBACK_RAW_PROXY_CLI_WRITEABLEonRawProxyCliWriteable()
LWS_CALLBACK_RAW_PROXY_SRV_WRITEABLEonRawProxySrvWriteable()
LWS_CALLBACK_RAW_PROXY_CLI_ADOPTonRawProxyCliAdopt()
LWS_CALLBACK_RAW_PROXY_SRV_ADOPTonRawProxySrvAdopt()

CGI / TLS / MQTT misc

ConstantHandlerArguments
LWS_CALLBACK_CGIonCgi(data, len)
LWS_CALLBACK_CGI_TERMINATEDonCgiTerminated()
LWS_CALLBACK_CGI_STDIN_DATAonCgiStdinData(data, len)
LWS_CALLBACK_CGI_STDIN_COMPLETEDonCgiStdinCompleted()
LWS_CALLBACK_CGI_PROCESS_ATTACHonCgiProcessAttach(pid)
LWS_CALLBACK_CONNECTINGonConnecting(fd)
LWS_CALLBACK_PROTOCOL_INITonProtocolInit()
LWS_CALLBACK_PROTOCOL_DESTROYonProtocolDestroy()
LWS_CALLBACK_WSI_CREATEonWsiCreate()
LWS_CALLBACK_WSI_DESTROYonWsiDestroy()
LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTSonOpensslLoadExtraClientVerifyCerts(sslPtr)
LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTSonOpensslLoadExtraServerVerifyCerts(sslPtr)
LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATIONonOpensslPerformClientCertVerification(sslPtr, preverifyOk)
LWS_CALLBACK_OPENSSL_PERFORM_SERVER_CERT_VERIFICATIONonOpensslPerformServerCertVerification(sslPtr, preverifyOk)
LWS_CALLBACK_SSL_INFOonSslInfo(data, len)
LWS_CALLBACK_VHOST_CERT_AGINGonVhostCertAging(daysLeft)
LWS_CALLBACK_VHOST_CERT_UPDATEonVhostCertUpdate()
LWS_CALLBACK_TIMERonTimer()
LWS_CALLBACK_GET_THREAD_IDonGetThreadId()
LWS_CALLBACK_EVENT_WAIT_CANCELLEDonEventWaitCancelled()
LWS_CALLBACK_GS_EVENTonGsEvent(data, len)
LWS_CALLBACK_CHILD_CLOSINGonChildClosing()
LWS_CALLBACK_MQTT_*onMqtt*varies

Reasons handled internally (you usually don't write them)

ADD_POLL_FD, DEL_POLL_FD, CHANGE_MODE_POLL_FD, LOCK_POLL, UNLOCK_POLL — see event-loop.md.