Verawebsockets
Line 1: | Line 1: | ||
+ | <br> | ||
== What is ''verawebsockets''? == | == What is ''verawebsockets''? == | ||
Line 18: | Line 19: | ||
* wso (websocket) | * wso (websocket) | ||
− | ==== Event IDs | + | === connect === |
+ | Connects to the URL from the websocket object. | ||
+ | |||
+ | Parameters: | ||
+ | * wso (websocket): This is the websocket object returned by the [[#create|create]] function. | ||
+ | Returns: | ||
+ | * nothing | ||
+ | |||
+ | === loop === | ||
+ | Parameters: | ||
+ | * none | ||
+ | Returns: | ||
+ | * nothing | ||
+ | |||
+ | === set_log_level === | ||
+ | Set how verbose the logs should be. | ||
+ | |||
+ | The default log level is 0, meaning nothing is logged. | ||
+ | |||
+ | If the library is used from LuaUPnP, the logs can be seen in /tmp/log.Init-LuaUPnP | ||
+ | |||
+ | Parameters: | ||
+ | * log_levels (int or string): log_levels can be either a number, representing a bit mask where each bit is a log level, or the string "all", which means all log levels enabled, and it's the equivalent of setting all the bits in the mask (log_levels = 2047). The available log levels are listed here. | ||
+ | <br> | ||
+ | == Reference == | ||
+ | === Event IDs === | ||
Since ''verawebsockets'' is based on the ''libwebsockets'' library, the verawebsockets event IDs are the same as the libwebsockets callback reasons, which are documented here: | Since ''verawebsockets'' is based on the ''libwebsockets'' library, the verawebsockets event IDs are the same as the libwebsockets callback reasons, which are documented here: | ||
Line 30: | Line 56: | ||
! style="border: 1px solid #000" | Description | ! style="border: 1px solid #000" | Description | ||
|- | |- | ||
− | | style="border: 1px solid #000" | 1 | + | | style="border: 1px solid #000; text-align: center" | 1 |
| style="border: 1px solid #000" | LWS_CALLBACK_CLIENT_CONNECTION_ERROR | | style="border: 1px solid #000" | LWS_CALLBACK_CLIENT_CONNECTION_ERROR | ||
| style="border: 1px solid #000" | Failed to connect to the server. The reason for the failure is passed as parameter to the callback function. Some possible values are: | | style="border: 1px solid #000" | Failed to connect to the server. The reason for the failure is passed as parameter to the callback function. Some possible values are: | ||
Line 70: | Line 96: | ||
* HS: Rejected at CLIENT_ESTABLISHED | * HS: Rejected at CLIENT_ESTABLISHED | ||
|- | |- | ||
− | | style="border: 1px solid #000" | 3 | + | | style="border: 1px solid #000; text-align: center" | 3 |
| style="border: 1px solid #000" | LWS_CALLBACK_CLIENT_ESTABLISHED | | style="border: 1px solid #000" | LWS_CALLBACK_CLIENT_ESTABLISHED | ||
| style="border: 1px solid #000" | Called after the connection with the server has been established. No parameter is passed to the callback function. | | style="border: 1px solid #000" | Called after the connection with the server has been established. No parameter is passed to the callback function. | ||
|- | |- | ||
− | | style="border: 1px solid #000" | 4 | + | | style="border: 1px solid #000; text-align: center" | 4 |
| style="border: 1px solid #000" | LWS_CALLBACK_CLOSED | | style="border: 1px solid #000" | LWS_CALLBACK_CLOSED | ||
| style="border: 1px solid #000" | Called after the websocket connection closed. No parameter is passed to the callback function. | | style="border: 1px solid #000" | Called after the websocket connection closed. No parameter is passed to the callback function. | ||
|- | |- | ||
− | | style="border: 1px solid #000" | 8 | + | | style="border: 1px solid #000; text-align: center" | 8 |
| style="border: 1px solid #000" | LWS_CALLBACK_CLIENT_RECEIVE | | style="border: 1px solid #000" | LWS_CALLBACK_CLIENT_RECEIVE | ||
| style="border: 1px solid #000" | Called when we receive data from the server. The received data is passed as parameter to the callback function. | | style="border: 1px solid #000" | Called when we receive data from the server. The received data is passed as parameter to the callback function. | ||
|} | |} | ||
− | + | <br> | |
− | + | === SSL settings === | |
These are the SSL settings which are currently supported: | These are the SSL settings which are currently supported: | ||
− | client_ssl_cert_filepath | + | {| style="border: 1px solid #000; border-collapse: collapse" |
− | + | |- | |
− | + | ! style="border: 1px solid #000" | SSL setting | |
− | === | + | ! style="border: 1px solid #000" | Description |
− | + | |- | |
− | + | | style="border: 1px solid #000; padding: 0px 10px" | client_ssl_cert_filepath | |
− | + | | style="border: 1px solid #000; padding: 0px 10px" | The certificate the client should present to the server on connection. | |
− | + | |- | |
− | + | | style="border: 1px solid #000; padding: 0px 10px" | client_ssl_private_key_filepath | |
− | + | | style="border: 1px solid #000; padding: 0px 10px" | Filepath to the client private key. | |
− | + | |} | |
− | === | + | <br> |
− | + | === Log levels === | |
− | + | {| style="border: 1px solid #000; border-collapse: collapse" | |
− | + | |- | |
− | + | ! style="border: 1px solid #000; padding: 2px 10px" | Log level | |
− | + | ! style="border: 1px solid #000; padding: 2px 10px" | Description | |
− | === | + | |- |
− | + | | style="border: 1px solid #000; text-align: right; padding-right: 10px" | 1 | |
− | + | | style="border: 1px solid #000; padding-left: 10px" | Error | |
− | + | |- | |
+ | | style="border: 1px solid #000; text-align: right; padding-right: 10px" | 2 | ||
+ | | style="border: 1px solid #000; padding-left: 10px" | Warning | ||
+ | |- | ||
+ | | style="border: 1px solid #000; text-align: right; padding-right: 10px" | 4 | ||
+ | | style="border: 1px solid #000; padding-left: 10px" | Notice | ||
+ | |- | ||
+ | | style="border: 1px solid #000; text-align: right; padding-right: 10px" | 8 | ||
+ | | style="border: 1px solid #000; padding-left: 10px" | Info | ||
+ | |- | ||
+ | | style="border: 1px solid #000; text-align: right; padding-right: 10px" | 16 | ||
+ | | style="border: 1px solid #000; padding-left: 10px" | Debug | ||
+ | |- | ||
+ | | style="border: 1px solid #000; text-align: right; padding-right: 10px" | 32 | ||
+ | | style="border: 1px solid #000; padding-left: 10px" | Parser | ||
+ | |- | ||
+ | | style="border: 1px solid #000; text-align: right; padding-right: 10px" | 64 | ||
+ | | style="border: 1px solid #000; padding-left: 10px" | Header | ||
+ | |- | ||
+ | | style="border: 1px solid #000; text-align: right; padding-right: 10px" | 128 | ||
+ | | style="border: 1px solid #000; padding-left: 10px" | Extensions | ||
+ | |- | ||
+ | | style="border: 1px solid #000; text-align: right; padding-right: 10px" | 256 | ||
+ | | style="border: 1px solid #000; padding-left: 10px" | Client | ||
+ | |- | ||
+ | | style="border: 1px solid #000; text-align: right; padding-right: 10px" | 512 | ||
+ | | style="border: 1px solid #000; padding-left: 10px" | Latency | ||
+ | |- | ||
+ | | style="border: 1px solid #000; text-align: right; padding-right: 10px" | 1024 | ||
+ | | style="border: 1px solid #000; padding-left: 10px" | User | ||
+ | |} | ||
+ | <br> | ||
== Further documentation == | == Further documentation == | ||
* The WebSocket protocol: | * The WebSocket protocol: |
Revision as of 12:07, 8 March 2018
Contents |
What is verawebsockets?
verawebsockets is a Lua library based on the libwebsockets v2.4 library (https://libwebsockets.org).
The intention is to provide websockets support for the Luup plugins, which means that verawebsockets can be used from LuaUPnP as well as from standalone Lua scripts.
Functions
create
Creates a websocket oject, which can be passed to the connect function.
Parameters:
- url (string): The URL to connect to.
- event_handlers (table): A table where the index is the event ID, and the value is the callback function name.
- ssl_settings (table): A table where the index is the SSL setting name, and the value is the SSL setting value.
- standalone (boolean): In standalone mode the service thread won't be detached, which means that the main thread should wait for the service thread to exit, before exiting itself. This is done by calling the loop function from Lua. This mode should be used when the library is loaded from a standalone Lua script, which can afford to block for an undefined amount of time. If the library is loaded from LuaUPnP, standalone should be false, because LuaUPnP functions can't block for much time, otherwise the watchdog will restart the Luup engine.
Returns:
- wso (websocket)
connect
Connects to the URL from the websocket object.
Parameters:
- wso (websocket): This is the websocket object returned by the create function.
Returns:
- nothing
loop
Parameters:
- none
Returns:
- nothing
set_log_level
Set how verbose the logs should be.
The default log level is 0, meaning nothing is logged.
If the library is used from LuaUPnP, the logs can be seen in /tmp/log.Init-LuaUPnP
Parameters:
- log_levels (int or string): log_levels can be either a number, representing a bit mask where each bit is a log level, or the string "all", which means all log levels enabled, and it's the equivalent of setting all the bits in the mask (log_levels = 2047). The available log levels are listed here.
Reference
Event IDs
Since verawebsockets is based on the libwebsockets library, the verawebsockets event IDs are the same as the libwebsockets callback reasons, which are documented here:
https://libwebsockets.org/lws-api-doc-v2.4-stable/html/group__usercb.html
These are the event IDs which are currently supported:
Event ID | libwebsockets callback reason | Description |
---|---|---|
1 | LWS_CALLBACK_CLIENT_CONNECTION_ERROR | Failed to connect to the server. The reason for the failure is passed as parameter to the callback function. Some possible values are:
|
3 | LWS_CALLBACK_CLIENT_ESTABLISHED | Called after the connection with the server has been established. No parameter is passed to the callback function. |
4 | LWS_CALLBACK_CLOSED | Called after the websocket connection closed. No parameter is passed to the callback function. |
8 | LWS_CALLBACK_CLIENT_RECEIVE | Called when we receive data from the server. The received data is passed as parameter to the callback function. |
SSL settings
These are the SSL settings which are currently supported:
SSL setting | Description |
---|---|
client_ssl_cert_filepath | The certificate the client should present to the server on connection. |
client_ssl_private_key_filepath | Filepath to the client private key. |
Log levels
Log level | Description |
---|---|
1 | Error |
2 | Warning |
4 | Notice |
8 | Info |
16 | Debug |
32 | Parser |
64 | Header |
128 | Extensions |
256 | Client |
512 | Latency |
1024 | User |
Further documentation
- The WebSocket protocol:
https://tools.ietf.org/html/rfc6455
- The libwebsockets library:
- libwebsockets v2.4 documentation:
https://libwebsockets.org/lws-api-doc-v2.4-stable/html/index.html