forked from espressif/esp-protocols
Deploying to gh-pages from @ espressif/esp-protocols@4ccc32ffb5 🚀
This commit is contained in:
Binary file not shown.
4
esp_websocket_client/.buildinfo
Normal file
4
esp_websocket_client/.buildinfo
Normal file
@@ -0,0 +1,4 @@
|
||||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: a301951143c10d4b674813ceac5980d8
|
||||
tags: 549b3d6d0415232fb7e35403b330ff49
|
127
esp_websocket_client/_sources/index.rst.txt
Normal file
127
esp_websocket_client/_sources/index.rst.txt
Normal file
@@ -0,0 +1,127 @@
|
||||
ESP WebSocket Client
|
||||
====================
|
||||
|
||||
Overview
|
||||
--------
|
||||
The ESP WebSocket client is an implementation of `WebSocket protocol client <https://tools.ietf.org/html/rfc6455>`_ for {IDF_TARGET_NAME}
|
||||
|
||||
Features
|
||||
--------
|
||||
* Supports WebSocket over TCP, TLS with mbedtls
|
||||
* Easy to setup with URI
|
||||
* Multiple instances (Multiple clients in one application)
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
URI
|
||||
^^^
|
||||
|
||||
- Supports ``ws``, ``wss`` schemes
|
||||
- WebSocket samples:
|
||||
|
||||
- ``ws://echo.websocket.org``: WebSocket over TCP, default port 80
|
||||
- ``wss://echo.websocket.org``: WebSocket over SSL, default port 443
|
||||
|
||||
Minimal configurations:
|
||||
|
||||
.. code:: c
|
||||
|
||||
const esp_websocket_client_config_t ws_cfg = {
|
||||
.uri = "ws://echo.websocket.org",
|
||||
};
|
||||
|
||||
The WebSocket client supports the use of both path and query in the URI. Sample:
|
||||
|
||||
.. code:: c
|
||||
|
||||
const esp_websocket_client_config_t ws_cfg = {
|
||||
.uri = "ws://echo.websocket.org/connectionhandler?id=104",
|
||||
};
|
||||
|
||||
|
||||
If there are any options related to the URI in
|
||||
:cpp:type:`esp_websocket_client_config_t`, the option defined by the URI will be
|
||||
overridden. Sample:
|
||||
|
||||
.. code:: c
|
||||
|
||||
const esp_websocket_client_config_t ws_cfg = {
|
||||
.uri = "ws://echo.websocket.org:123",
|
||||
.port = 4567,
|
||||
};
|
||||
//WebSocket client will connect to websocket.org using port 4567
|
||||
|
||||
TLS
|
||||
^^^
|
||||
|
||||
Configuration:
|
||||
|
||||
.. code:: c
|
||||
|
||||
const esp_websocket_client_config_t ws_cfg = {
|
||||
.uri = "wss://echo.websocket.org",
|
||||
.cert_pem = (const char *)websocket_org_pem_start,
|
||||
};
|
||||
|
||||
.. note:: If you want to verify the server, then you need to provide a certificate in PEM format, and provide to ``cert_pem`` in :cpp:type:`websocket_client_config_t`. If no certficate is provided then the TLS connection will default to not requiring verification.
|
||||
|
||||
PEM certificate for this example could be extracted from an openssl `s_client` command connecting to websocket.org.
|
||||
In case a host operating system has `openssl` and `sed` packages installed, one could execute the following command to download and save the root or intermediate root certificate to a file (Note for Windows users: Both Linux like environment or Windows native packages may be used).
|
||||
```
|
||||
echo "" | openssl s_client -showcerts -connect websocket.org:443 | sed -n "1,/Root/d; /BEGIN/,/END/p" | openssl x509 -outform PEM >websocket_org.pem
|
||||
```
|
||||
|
||||
This command will extract the second certificate in the chain and save it as a pem-file.
|
||||
|
||||
Subprotocol
|
||||
^^^^^^^^^^^
|
||||
|
||||
The subprotocol field in the config struct can be used to request a subprotocol
|
||||
|
||||
.. code:: c
|
||||
|
||||
const esp_websocket_client_config_t ws_cfg = {
|
||||
.uri = "ws://websocket.org",
|
||||
.subprotocol = "soap",
|
||||
};
|
||||
|
||||
.. note:: The client is indifferent to the subprotocol field in the server response and will accept the connection no matter what the server replies.
|
||||
|
||||
For more options on :cpp:type:`esp_websocket_client_config_t`, please refer to API reference below
|
||||
|
||||
Events
|
||||
------
|
||||
* `WEBSOCKET_EVENT_CONNECTED`: The client has successfully established a connection to the server. The client is now ready to send and receive data. Contains no event data.
|
||||
* `WEBSOCKET_EVENT_DISCONNECTED`: The client has aborted the connection due to the transport layer failing to read data, e.g. because the server is unavailable. Contains no event data.
|
||||
* `WEBSOCKET_EVENT_DATA`: The client has successfully received and parsed a WebSocket frame. The event data contains a pointer to the payload data, the length of the payload data as well as the opcode of the received frame. A message may be fragmented into multiple events if the length exceeds the buffer size. This event will also be posted for non-payload frames, e.g. pong or connection close frames.
|
||||
* `WEBSOCKET_EVENT_ERROR`: Not used in the current implementation of the client.
|
||||
|
||||
If the client handle is needed in the event handler it can be accessed through the pointer passed to the event handler:
|
||||
|
||||
.. code:: c
|
||||
|
||||
esp_websocket_client_handle_t client = (esp_websocket_client_handle_t)handler_args;
|
||||
|
||||
|
||||
Limitations and Known Issues
|
||||
----------------------------
|
||||
* The client is able to request the use of a subprotocol from the server during the handshake, but does not do any subprotocol related checks on the response from the server.
|
||||
|
||||
Application Example
|
||||
-------------------
|
||||
A simple WebSocket example that uses esp_websocket_client to establish a websocket connection and send/receive data with the `websocket.org <https://websocket.org>`_ server can be found here: :example:`example <../examples>`.
|
||||
|
||||
Sending Text Data
|
||||
^^^^^^^^^^^^^^^^^
|
||||
The WebSocket client supports sending data as a text data frame, which informs the application layer that the payload data is text data encoded as UTF-8. Example:
|
||||
|
||||
.. code:: cpp
|
||||
|
||||
esp_websocket_client_send_text(client, data, len, portMAX_DELAY);
|
||||
|
||||
|
||||
API Reference
|
||||
-------------
|
||||
|
||||
.. include-build-file:: inc/esp_websocket_client.inc
|
||||
|
BIN
esp_websocket_client/_static/DejaVuSans.ttf
Normal file
BIN
esp_websocket_client/_static/DejaVuSans.ttf
Normal file
Binary file not shown.
BIN
esp_websocket_client/_static/NotoSansSC-Regular.otf
Normal file
BIN
esp_websocket_client/_static/NotoSansSC-Regular.otf
Normal file
Binary file not shown.
906
esp_websocket_client/_static/basic.css
Normal file
906
esp_websocket_client/_static/basic.css
Normal file
@@ -0,0 +1,906 @@
|
||||
/*
|
||||
* basic.css
|
||||
* ~~~~~~~~~
|
||||
*
|
||||
* Sphinx stylesheet -- basic theme.
|
||||
*
|
||||
* :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
/* -- main layout ----------------------------------------------------------- */
|
||||
|
||||
div.clearer {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
div.section::after {
|
||||
display: block;
|
||||
content: '';
|
||||
clear: left;
|
||||
}
|
||||
|
||||
/* -- relbar ---------------------------------------------------------------- */
|
||||
|
||||
div.related {
|
||||
width: 100%;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
div.related h3 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.related ul {
|
||||
margin: 0;
|
||||
padding: 0 0 0 10px;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
div.related li {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
div.related li.right {
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
/* -- sidebar --------------------------------------------------------------- */
|
||||
|
||||
div.sphinxsidebarwrapper {
|
||||
padding: 10px 5px 0 10px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar {
|
||||
float: left;
|
||||
width: 230px;
|
||||
margin-left: -100%;
|
||||
font-size: 90%;
|
||||
word-wrap: break-word;
|
||||
overflow-wrap : break-word;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul ul,
|
||||
div.sphinxsidebar ul.want-points {
|
||||
margin-left: 20px;
|
||||
list-style: square;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
div.sphinxsidebar form {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar input {
|
||||
border: 1px solid #98dbcc;
|
||||
font-family: sans-serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox form.search {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox input[type="text"] {
|
||||
float: left;
|
||||
width: 80%;
|
||||
padding: 0.25em;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox input[type="submit"] {
|
||||
float: left;
|
||||
width: 20%;
|
||||
border-left: none;
|
||||
padding: 0.25em;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
/* -- search page ----------------------------------------------------------- */
|
||||
|
||||
ul.search {
|
||||
margin: 10px 0 0 20px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ul.search li {
|
||||
padding: 5px 0 5px 20px;
|
||||
background-image: url(file.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0 7px;
|
||||
}
|
||||
|
||||
ul.search li a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul.search li p.context {
|
||||
color: #888;
|
||||
margin: 2px 0 0 30px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
ul.keywordmatches li.goodmatch a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* -- index page ------------------------------------------------------------ */
|
||||
|
||||
table.contentstable {
|
||||
width: 90%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.contentstable p.biglink {
|
||||
line-height: 150%;
|
||||
}
|
||||
|
||||
a.biglink {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
span.linkdescr {
|
||||
font-style: italic;
|
||||
padding-top: 5px;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
/* -- general index --------------------------------------------------------- */
|
||||
|
||||
table.indextable {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.indextable td {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
table.indextable ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
table.indextable > tbody > tr > td > ul {
|
||||
padding-left: 0em;
|
||||
}
|
||||
|
||||
table.indextable tr.pcap {
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
table.indextable tr.cap {
|
||||
margin-top: 10px;
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
img.toggler {
|
||||
margin-right: 3px;
|
||||
margin-top: 3px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
div.modindex-jumpbox {
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin: 1em 0 1em 0;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
div.genindex-jumpbox {
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin: 1em 0 1em 0;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
/* -- domain module index --------------------------------------------------- */
|
||||
|
||||
table.modindextable td {
|
||||
padding: 2px;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
/* -- general body styles --------------------------------------------------- */
|
||||
|
||||
div.body {
|
||||
min-width: 450px;
|
||||
max-width: 800px;
|
||||
}
|
||||
|
||||
div.body p, div.body dd, div.body li, div.body blockquote {
|
||||
-moz-hyphens: auto;
|
||||
-ms-hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
a.headerlink {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
a.brackets:before,
|
||||
span.brackets > a:before{
|
||||
content: "[";
|
||||
}
|
||||
|
||||
a.brackets:after,
|
||||
span.brackets > a:after {
|
||||
content: "]";
|
||||
}
|
||||
|
||||
h1:hover > a.headerlink,
|
||||
h2:hover > a.headerlink,
|
||||
h3:hover > a.headerlink,
|
||||
h4:hover > a.headerlink,
|
||||
h5:hover > a.headerlink,
|
||||
h6:hover > a.headerlink,
|
||||
dt:hover > a.headerlink,
|
||||
caption:hover > a.headerlink,
|
||||
p.caption:hover > a.headerlink,
|
||||
div.code-block-caption:hover > a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
div.body p.caption {
|
||||
text-align: inherit;
|
||||
}
|
||||
|
||||
div.body td {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.first {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
p.rubric {
|
||||
margin-top: 30px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
img.align-left, figure.align-left, .figure.align-left, object.align-left {
|
||||
clear: left;
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
img.align-right, figure.align-right, .figure.align-right, object.align-right {
|
||||
clear: right;
|
||||
float: right;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
img.align-center, figure.align-center, .figure.align-center, object.align-center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
img.align-default, figure.align-default, .figure.align-default {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.align-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.align-default {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.align-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* -- sidebars -------------------------------------------------------------- */
|
||||
|
||||
div.sidebar,
|
||||
aside.sidebar {
|
||||
margin: 0 0 0.5em 1em;
|
||||
border: 1px solid #ddb;
|
||||
padding: 7px;
|
||||
background-color: #ffe;
|
||||
width: 40%;
|
||||
float: right;
|
||||
clear: right;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
p.sidebar-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.admonition, div.topic, blockquote {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
/* -- topics ---------------------------------------------------------------- */
|
||||
|
||||
div.topic {
|
||||
border: 1px solid #ccc;
|
||||
padding: 7px;
|
||||
margin: 10px 0 10px 0;
|
||||
}
|
||||
|
||||
p.topic-title {
|
||||
font-size: 1.1em;
|
||||
font-weight: bold;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
/* -- admonitions ----------------------------------------------------------- */
|
||||
|
||||
div.admonition {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
padding: 7px;
|
||||
}
|
||||
|
||||
div.admonition dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
p.admonition-title {
|
||||
margin: 0px 10px 5px 0px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.body p.centered {
|
||||
text-align: center;
|
||||
margin-top: 25px;
|
||||
}
|
||||
|
||||
/* -- content of sidebars/topics/admonitions -------------------------------- */
|
||||
|
||||
div.sidebar > :last-child,
|
||||
aside.sidebar > :last-child,
|
||||
div.topic > :last-child,
|
||||
div.admonition > :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
div.sidebar::after,
|
||||
aside.sidebar::after,
|
||||
div.topic::after,
|
||||
div.admonition::after,
|
||||
blockquote::after {
|
||||
display: block;
|
||||
content: '';
|
||||
clear: both;
|
||||
}
|
||||
|
||||
/* -- tables ---------------------------------------------------------------- */
|
||||
|
||||
table.docutils {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
border: 0;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table.align-center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.align-default {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table caption span.caption-number {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
table caption span.caption-text {
|
||||
}
|
||||
|
||||
table.docutils td, table.docutils th {
|
||||
padding: 1px 8px 1px 5px;
|
||||
border-top: 0;
|
||||
border-left: 0;
|
||||
border-right: 0;
|
||||
border-bottom: 1px solid #aaa;
|
||||
}
|
||||
|
||||
table.footnote td, table.footnote th {
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: left;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
table.citation {
|
||||
border-left: solid 1px gray;
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
table.citation td {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
th > :first-child,
|
||||
td > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
th > :last-child,
|
||||
td > :last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
/* -- figures --------------------------------------------------------------- */
|
||||
|
||||
div.figure, figure {
|
||||
margin: 0.5em;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
div.figure p.caption, figcaption {
|
||||
padding: 0.3em;
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-number,
|
||||
figcaption span.caption-number {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-text,
|
||||
figcaption span.caption-text {
|
||||
}
|
||||
|
||||
/* -- field list styles ----------------------------------------------------- */
|
||||
|
||||
table.field-list td, table.field-list th {
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
.field-list ul {
|
||||
margin: 0;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.field-list p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.field-name {
|
||||
-moz-hyphens: manual;
|
||||
-ms-hyphens: manual;
|
||||
-webkit-hyphens: manual;
|
||||
hyphens: manual;
|
||||
}
|
||||
|
||||
/* -- hlist styles ---------------------------------------------------------- */
|
||||
|
||||
table.hlist {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
table.hlist td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/* -- object description styles --------------------------------------------- */
|
||||
|
||||
.sig {
|
||||
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||
}
|
||||
|
||||
.sig-name, code.descname {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.sig-name {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
code.descname {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.sig-prename, code.descclassname {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.optional {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.sig-paren {
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
.sig-param.n {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* C++ specific styling */
|
||||
|
||||
.sig-inline.c-texpr,
|
||||
.sig-inline.cpp-texpr {
|
||||
font-family: unset;
|
||||
}
|
||||
|
||||
.sig.c .k, .sig.c .kt,
|
||||
.sig.cpp .k, .sig.cpp .kt {
|
||||
color: #0033B3;
|
||||
}
|
||||
|
||||
.sig.c .m,
|
||||
.sig.cpp .m {
|
||||
color: #1750EB;
|
||||
}
|
||||
|
||||
.sig.c .s, .sig.c .sc,
|
||||
.sig.cpp .s, .sig.cpp .sc {
|
||||
color: #067D17;
|
||||
}
|
||||
|
||||
|
||||
/* -- other body styles ----------------------------------------------------- */
|
||||
|
||||
ol.arabic {
|
||||
list-style: decimal;
|
||||
}
|
||||
|
||||
ol.loweralpha {
|
||||
list-style: lower-alpha;
|
||||
}
|
||||
|
||||
ol.upperalpha {
|
||||
list-style: upper-alpha;
|
||||
}
|
||||
|
||||
ol.lowerroman {
|
||||
list-style: lower-roman;
|
||||
}
|
||||
|
||||
ol.upperroman {
|
||||
list-style: upper-roman;
|
||||
}
|
||||
|
||||
:not(li) > ol > li:first-child > :first-child,
|
||||
:not(li) > ul > li:first-child > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
:not(li) > ol > li:last-child > :last-child,
|
||||
:not(li) > ul > li:last-child > :last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
ol.simple ol p,
|
||||
ol.simple ul p,
|
||||
ul.simple ol p,
|
||||
ul.simple ul p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ol.simple > li:not(:first-child) > p,
|
||||
ul.simple > li:not(:first-child) > p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ol.simple p,
|
||||
ul.simple p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dl.footnote > dt,
|
||||
dl.citation > dt {
|
||||
float: left;
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
|
||||
dl.footnote > dd,
|
||||
dl.citation > dd {
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
dl.footnote > dd:after,
|
||||
dl.citation > dd:after {
|
||||
content: "";
|
||||
clear: both;
|
||||
}
|
||||
|
||||
dl.field-list {
|
||||
display: grid;
|
||||
grid-template-columns: fit-content(30%) auto;
|
||||
}
|
||||
|
||||
dl.field-list > dt {
|
||||
font-weight: bold;
|
||||
word-break: break-word;
|
||||
padding-left: 0.5em;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
dl.field-list > dt:after {
|
||||
content: ":";
|
||||
}
|
||||
|
||||
dl.field-list > dd {
|
||||
padding-left: 0.5em;
|
||||
margin-top: 0em;
|
||||
margin-left: 0em;
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
dd > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
dd ul, dd table {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-top: 3px;
|
||||
margin-bottom: 10px;
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
dl > dd:last-child,
|
||||
dl > dd:last-child > :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt:target, span.highlighted {
|
||||
background-color: #fbe54e;
|
||||
}
|
||||
|
||||
rect.highlighted {
|
||||
fill: #fbe54e;
|
||||
}
|
||||
|
||||
dl.glossary dt {
|
||||
font-weight: bold;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.versionmodified {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.system-message {
|
||||
background-color: #fda;
|
||||
padding: 5px;
|
||||
border: 3px solid red;
|
||||
}
|
||||
|
||||
.footnote:target {
|
||||
background-color: #ffa;
|
||||
}
|
||||
|
||||
.line-block {
|
||||
display: block;
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.line-block .line-block {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
margin-left: 1.5em;
|
||||
}
|
||||
|
||||
.guilabel, .menuselection {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
.accelerator {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.classifier {
|
||||
font-style: oblique;
|
||||
}
|
||||
|
||||
.classifier:before {
|
||||
font-style: normal;
|
||||
margin: 0 0.5em;
|
||||
content: ":";
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
abbr, acronym {
|
||||
border-bottom: dotted 1px;
|
||||
cursor: help;
|
||||
}
|
||||
|
||||
/* -- code displays --------------------------------------------------------- */
|
||||
|
||||
pre {
|
||||
overflow: auto;
|
||||
overflow-y: hidden; /* fixes display issues on Chrome browsers */
|
||||
}
|
||||
|
||||
pre, div[class*="highlight-"] {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
span.pre {
|
||||
-moz-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
-webkit-hyphens: none;
|
||||
hyphens: none;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
div[class*="highlight-"] {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
td.linenos pre {
|
||||
border: 0;
|
||||
background-color: transparent;
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
table.highlighttable {
|
||||
display: block;
|
||||
}
|
||||
|
||||
table.highlighttable tbody {
|
||||
display: block;
|
||||
}
|
||||
|
||||
table.highlighttable tr {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
table.highlighttable td {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table.highlighttable td.linenos {
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
|
||||
table.highlighttable td.code {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.highlight .hll {
|
||||
display: block;
|
||||
}
|
||||
|
||||
div.highlight pre,
|
||||
table.highlighttable pre {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.code-block-caption + div {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
div.code-block-caption {
|
||||
margin-top: 1em;
|
||||
padding: 2px 5px;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
div.code-block-caption code {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
table.highlighttable td.linenos,
|
||||
span.linenos,
|
||||
div.highlight span.gp { /* gp: Generic.Prompt */
|
||||
user-select: none;
|
||||
-webkit-user-select: text; /* Safari fallback only */
|
||||
-webkit-user-select: none; /* Chrome/Safari */
|
||||
-moz-user-select: none; /* Firefox */
|
||||
-ms-user-select: none; /* IE10+ */
|
||||
}
|
||||
|
||||
div.code-block-caption span.caption-number {
|
||||
padding: 0.1em 0.3em;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.code-block-caption span.caption-text {
|
||||
}
|
||||
|
||||
div.literal-block-wrapper {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
code.xref, a code {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.viewcode-link {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.viewcode-back {
|
||||
float: right;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
div.viewcode-block:target {
|
||||
margin: -1px -10px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
/* -- math display ---------------------------------------------------------- */
|
||||
|
||||
img.math {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
div.body div.math p {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
span.eqno {
|
||||
float: right;
|
||||
}
|
||||
|
||||
span.eqno a.headerlink {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
div.math:hover a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
/* -- printout stylesheet --------------------------------------------------- */
|
||||
|
||||
@media print {
|
||||
div.document,
|
||||
div.documentwrapper,
|
||||
div.bodywrapper {
|
||||
margin: 0 !important;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
div.sphinxsidebar,
|
||||
div.related,
|
||||
div.footer,
|
||||
#top-link {
|
||||
display: none;
|
||||
}
|
||||
}
|
7
esp_websocket_client/_static/clipboard.min.js
vendored
Normal file
7
esp_websocket_client/_static/clipboard.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
esp_websocket_client/_static/copy-button.svg
Normal file
1
esp_websocket_client/_static/copy-button.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg aria-hidden="true" data-prefix="far" data-icon="copy" class="svg-inline--fa fa-copy fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="#777" d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"></path></svg>
|
After Width: | Height: | Size: 711 B |
67
esp_websocket_client/_static/copybutton.css
Normal file
67
esp_websocket_client/_static/copybutton.css
Normal file
@@ -0,0 +1,67 @@
|
||||
/* Copy buttons */
|
||||
a.copybtn {
|
||||
position: absolute;
|
||||
top: .2em;
|
||||
right: .2em;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
opacity: .3;
|
||||
transition: opacity 0.5s;
|
||||
border: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
div.highlight {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
a.copybtn > img {
|
||||
vertical-align: top;
|
||||
margin: 0;
|
||||
top: 0;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.highlight:hover .copybtn {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* A minimal CSS-only tooltip copied from:
|
||||
* https://codepen.io/mildrenben/pen/rVBrpK
|
||||
*
|
||||
* To use, write HTML like the following:
|
||||
*
|
||||
* <p class="o-tooltip--left" data-tooltip="Hey">Short</p>
|
||||
*/
|
||||
.o-tooltip--left {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.o-tooltip--left:after {
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
position: absolute;
|
||||
content: attr(data-tooltip);
|
||||
padding: 2px;
|
||||
top: 0;
|
||||
left: -.2em;
|
||||
background: grey;
|
||||
font-size: 1rem;
|
||||
color: white;
|
||||
white-space: nowrap;
|
||||
z-index: 2;
|
||||
border-radius: 2px;
|
||||
transform: translateX(-102%) translateY(0);
|
||||
transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1);
|
||||
}
|
||||
|
||||
.o-tooltip--left:hover:after {
|
||||
display: block;
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
transform: translateX(-100%) translateY(0);
|
||||
transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1);
|
||||
transition-delay: .5s;
|
||||
}
|
153
esp_websocket_client/_static/copybutton.js
Normal file
153
esp_websocket_client/_static/copybutton.js
Normal file
@@ -0,0 +1,153 @@
|
||||
// Localization support
|
||||
const messages = {
|
||||
'en': {
|
||||
'copy': 'Copy',
|
||||
'copy_to_clipboard': 'Copy to clipboard',
|
||||
'copy_success': 'Copied!',
|
||||
'copy_failure': 'Failed to copy',
|
||||
},
|
||||
'es' : {
|
||||
'copy': 'Copiar',
|
||||
'copy_to_clipboard': 'Copiar al portapapeles',
|
||||
'copy_success': '¡Copiado!',
|
||||
'copy_failure': 'Error al copiar',
|
||||
},
|
||||
'de' : {
|
||||
'copy': 'Kopieren',
|
||||
'copy_to_clipboard': 'In die Zwischenablage kopieren',
|
||||
'copy_success': 'Kopiert!',
|
||||
'copy_failure': 'Fehler beim Kopieren',
|
||||
}
|
||||
}
|
||||
|
||||
let locale = 'en'
|
||||
if( document.documentElement.lang !== undefined
|
||||
&& messages[document.documentElement.lang] !== undefined ) {
|
||||
locale = document.documentElement.lang
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up copy/paste for code blocks
|
||||
*/
|
||||
|
||||
const runWhenDOMLoaded = cb => {
|
||||
if (document.readyState != 'loading') {
|
||||
cb()
|
||||
} else if (document.addEventListener) {
|
||||
document.addEventListener('DOMContentLoaded', cb)
|
||||
} else {
|
||||
document.attachEvent('onreadystatechange', function() {
|
||||
if (document.readyState == 'complete') cb()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const codeCellId = index => `codecell${index}`
|
||||
|
||||
// Clears selected text since ClipboardJS will select the text when copying
|
||||
const clearSelection = () => {
|
||||
if (window.getSelection) {
|
||||
window.getSelection().removeAllRanges()
|
||||
} else if (document.selection) {
|
||||
document.selection.empty()
|
||||
}
|
||||
}
|
||||
|
||||
// Changes tooltip text for two seconds, then changes it back
|
||||
const temporarilyChangeTooltip = (el, newText) => {
|
||||
const oldText = el.getAttribute('data-tooltip')
|
||||
el.setAttribute('data-tooltip', newText)
|
||||
setTimeout(() => el.setAttribute('data-tooltip', oldText), 2000)
|
||||
}
|
||||
|
||||
const addCopyButtonToCodeCells = () => {
|
||||
// If ClipboardJS hasn't loaded, wait a bit and try again. This
|
||||
// happens because we load ClipboardJS asynchronously.
|
||||
if (window.ClipboardJS === undefined) {
|
||||
setTimeout(addCopyButtonToCodeCells, 250)
|
||||
return
|
||||
}
|
||||
|
||||
// Add copybuttons to all of our code cells
|
||||
const codeCells = document.querySelectorAll('div.highlight pre')
|
||||
codeCells.forEach((codeCell, index) => {
|
||||
const id = codeCellId(index)
|
||||
codeCell.setAttribute('id', id)
|
||||
const pre_bg = getComputedStyle(codeCell).backgroundColor;
|
||||
|
||||
const clipboardButton = id =>
|
||||
`<a class="copybtn o-tooltip--left" style="background-color: ${pre_bg}" data-tooltip="${messages[locale]['copy']}" data-clipboard-target="#${id}">
|
||||
<img src="${DOCUMENTATION_OPTIONS.URL_ROOT}_static/copy-button.svg" alt="${messages[locale]['copy_to_clipboard']}">
|
||||
</a>`
|
||||
codeCell.insertAdjacentHTML('afterend', clipboardButton(id))
|
||||
})
|
||||
|
||||
function escapeRegExp(string) {
|
||||
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
|
||||
}
|
||||
|
||||
// Callback when a copy button is clicked. Will be passed the node that was clicked
|
||||
// should then grab the text and replace pieces of text that shouldn't be used in output
|
||||
function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true) {
|
||||
|
||||
var regexp;
|
||||
var match;
|
||||
|
||||
// create regexp to capture prompt and remaining line
|
||||
if (isRegexp) {
|
||||
regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)')
|
||||
} else {
|
||||
regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)')
|
||||
}
|
||||
|
||||
const outputLines = [];
|
||||
var promptFound = false;
|
||||
for (const line of textContent.split('\n')) {
|
||||
match = line.match(regexp)
|
||||
if (match) {
|
||||
promptFound = true
|
||||
if (removePrompts) {
|
||||
outputLines.push(match[2])
|
||||
} else {
|
||||
outputLines.push(line)
|
||||
}
|
||||
} else {
|
||||
if (!onlyCopyPromptLines) {
|
||||
outputLines.push(line)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If no lines with the prompt were found then just use original lines
|
||||
if (promptFound) {
|
||||
textContent = outputLines.join('\n');
|
||||
}
|
||||
|
||||
// Remove a trailing newline to avoid auto-running when pasting
|
||||
if (textContent.endsWith("\n")) {
|
||||
textContent = textContent.slice(0, -1)
|
||||
}
|
||||
return textContent
|
||||
}
|
||||
|
||||
|
||||
var copyTargetText = (trigger) => {
|
||||
var target = document.querySelector(trigger.attributes['data-clipboard-target'].value);
|
||||
return formatCopyText(target.innerText, '', false, true, true)
|
||||
}
|
||||
|
||||
// Initialize with a callback so we can modify the text before copy
|
||||
const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText})
|
||||
|
||||
// Update UI with error/success messages
|
||||
clipboard.on('success', event => {
|
||||
clearSelection()
|
||||
temporarilyChangeTooltip(event.trigger, messages[locale]['copy_success'])
|
||||
})
|
||||
|
||||
clipboard.on('error', event => {
|
||||
temporarilyChangeTooltip(event.trigger, messages[locale]['copy_failure'])
|
||||
})
|
||||
}
|
||||
|
||||
runWhenDOMLoaded(addCopyButtonToCodeCells)
|
47
esp_websocket_client/_static/copybutton_funcs.js
Normal file
47
esp_websocket_client/_static/copybutton_funcs.js
Normal file
@@ -0,0 +1,47 @@
|
||||
function escapeRegExp(string) {
|
||||
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
|
||||
}
|
||||
|
||||
// Callback when a copy button is clicked. Will be passed the node that was clicked
|
||||
// should then grab the text and replace pieces of text that shouldn't be used in output
|
||||
export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true) {
|
||||
|
||||
var regexp;
|
||||
var match;
|
||||
|
||||
// create regexp to capture prompt and remaining line
|
||||
if (isRegexp) {
|
||||
regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)')
|
||||
} else {
|
||||
regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)')
|
||||
}
|
||||
|
||||
const outputLines = [];
|
||||
var promptFound = false;
|
||||
for (const line of textContent.split('\n')) {
|
||||
match = line.match(regexp)
|
||||
if (match) {
|
||||
promptFound = true
|
||||
if (removePrompts) {
|
||||
outputLines.push(match[2])
|
||||
} else {
|
||||
outputLines.push(line)
|
||||
}
|
||||
} else {
|
||||
if (!onlyCopyPromptLines) {
|
||||
outputLines.push(line)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If no lines with the prompt were found then just use original lines
|
||||
if (promptFound) {
|
||||
textContent = outputLines.join('\n');
|
||||
}
|
||||
|
||||
// Remove a trailing newline to avoid auto-running when pasting
|
||||
if (textContent.endsWith("\n")) {
|
||||
textContent = textContent.slice(0, -1)
|
||||
}
|
||||
return textContent
|
||||
}
|
1
esp_websocket_client/_static/css/badge_only.css
Normal file
1
esp_websocket_client/_static/css/badge_only.css
Normal file
@@ -0,0 +1 @@
|
||||
.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}
|
BIN
esp_websocket_client/_static/css/fonts/Roboto-Slab-Bold.woff
Normal file
BIN
esp_websocket_client/_static/css/fonts/Roboto-Slab-Bold.woff
Normal file
Binary file not shown.
BIN
esp_websocket_client/_static/css/fonts/Roboto-Slab-Bold.woff2
Normal file
BIN
esp_websocket_client/_static/css/fonts/Roboto-Slab-Bold.woff2
Normal file
Binary file not shown.
BIN
esp_websocket_client/_static/css/fonts/Roboto-Slab-Regular.woff
Normal file
BIN
esp_websocket_client/_static/css/fonts/Roboto-Slab-Regular.woff
Normal file
Binary file not shown.
BIN
esp_websocket_client/_static/css/fonts/Roboto-Slab-Regular.woff2
Normal file
BIN
esp_websocket_client/_static/css/fonts/Roboto-Slab-Regular.woff2
Normal file
Binary file not shown.
BIN
esp_websocket_client/_static/css/fonts/fontawesome-webfont.eot
Normal file
BIN
esp_websocket_client/_static/css/fonts/fontawesome-webfont.eot
Normal file
Binary file not shown.
2671
esp_websocket_client/_static/css/fonts/fontawesome-webfont.svg
Normal file
2671
esp_websocket_client/_static/css/fonts/fontawesome-webfont.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 434 KiB |
BIN
esp_websocket_client/_static/css/fonts/fontawesome-webfont.ttf
Normal file
BIN
esp_websocket_client/_static/css/fonts/fontawesome-webfont.ttf
Normal file
Binary file not shown.
BIN
esp_websocket_client/_static/css/fonts/fontawesome-webfont.woff
Normal file
BIN
esp_websocket_client/_static/css/fonts/fontawesome-webfont.woff
Normal file
Binary file not shown.
BIN
esp_websocket_client/_static/css/fonts/fontawesome-webfont.woff2
Normal file
BIN
esp_websocket_client/_static/css/fonts/fontawesome-webfont.woff2
Normal file
Binary file not shown.
BIN
esp_websocket_client/_static/css/fonts/lato-bold-italic.woff
Normal file
BIN
esp_websocket_client/_static/css/fonts/lato-bold-italic.woff
Normal file
Binary file not shown.
BIN
esp_websocket_client/_static/css/fonts/lato-bold-italic.woff2
Normal file
BIN
esp_websocket_client/_static/css/fonts/lato-bold-italic.woff2
Normal file
Binary file not shown.
BIN
esp_websocket_client/_static/css/fonts/lato-bold.woff
Normal file
BIN
esp_websocket_client/_static/css/fonts/lato-bold.woff
Normal file
Binary file not shown.
BIN
esp_websocket_client/_static/css/fonts/lato-bold.woff2
Normal file
BIN
esp_websocket_client/_static/css/fonts/lato-bold.woff2
Normal file
Binary file not shown.
BIN
esp_websocket_client/_static/css/fonts/lato-normal-italic.woff
Normal file
BIN
esp_websocket_client/_static/css/fonts/lato-normal-italic.woff
Normal file
Binary file not shown.
BIN
esp_websocket_client/_static/css/fonts/lato-normal-italic.woff2
Normal file
BIN
esp_websocket_client/_static/css/fonts/lato-normal-italic.woff2
Normal file
Binary file not shown.
BIN
esp_websocket_client/_static/css/fonts/lato-normal.woff
Normal file
BIN
esp_websocket_client/_static/css/fonts/lato-normal.woff
Normal file
Binary file not shown.
BIN
esp_websocket_client/_static/css/fonts/lato-normal.woff2
Normal file
BIN
esp_websocket_client/_static/css/fonts/lato-normal.woff2
Normal file
Binary file not shown.
4
esp_websocket_client/_static/css/theme.css
Normal file
4
esp_websocket_client/_static/css/theme.css
Normal file
File diff suppressed because one or more lines are too long
326
esp_websocket_client/_static/doctools.js
Normal file
326
esp_websocket_client/_static/doctools.js
Normal file
@@ -0,0 +1,326 @@
|
||||
/*
|
||||
* doctools.js
|
||||
* ~~~~~~~~~~~
|
||||
*
|
||||
* Sphinx JavaScript utilities for all documentation.
|
||||
*
|
||||
* :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* select a different prefix for underscore
|
||||
*/
|
||||
$u = _.noConflict();
|
||||
|
||||
/**
|
||||
* make the code below compatible with browsers without
|
||||
* an installed firebug like debugger
|
||||
if (!window.console || !console.firebug) {
|
||||
var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
|
||||
"dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
|
||||
"profile", "profileEnd"];
|
||||
window.console = {};
|
||||
for (var i = 0; i < names.length; ++i)
|
||||
window.console[names[i]] = function() {};
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* small helper function to urldecode strings
|
||||
*
|
||||
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
|
||||
*/
|
||||
jQuery.urldecode = function(x) {
|
||||
if (!x) {
|
||||
return x
|
||||
}
|
||||
return decodeURIComponent(x.replace(/\+/g, ' '));
|
||||
};
|
||||
|
||||
/**
|
||||
* small helper function to urlencode strings
|
||||
*/
|
||||
jQuery.urlencode = encodeURIComponent;
|
||||
|
||||
/**
|
||||
* This function returns the parsed url parameters of the
|
||||
* current request. Multiple values per key are supported,
|
||||
* it will always return arrays of strings for the value parts.
|
||||
*/
|
||||
jQuery.getQueryParameters = function(s) {
|
||||
if (typeof s === 'undefined')
|
||||
s = document.location.search;
|
||||
var parts = s.substr(s.indexOf('?') + 1).split('&');
|
||||
var result = {};
|
||||
for (var i = 0; i < parts.length; i++) {
|
||||
var tmp = parts[i].split('=', 2);
|
||||
var key = jQuery.urldecode(tmp[0]);
|
||||
var value = jQuery.urldecode(tmp[1]);
|
||||
if (key in result)
|
||||
result[key].push(value);
|
||||
else
|
||||
result[key] = [value];
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* highlight a given string on a jquery object by wrapping it in
|
||||
* span elements with the given class name.
|
||||
*/
|
||||
jQuery.fn.highlightText = function(text, className) {
|
||||
function highlight(node, addItems) {
|
||||
if (node.nodeType === 3) {
|
||||
var val = node.nodeValue;
|
||||
var pos = val.toLowerCase().indexOf(text);
|
||||
if (pos >= 0 &&
|
||||
!jQuery(node.parentNode).hasClass(className) &&
|
||||
!jQuery(node.parentNode).hasClass("nohighlight")) {
|
||||
var span;
|
||||
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
|
||||
if (isInSVG) {
|
||||
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
||||
} else {
|
||||
span = document.createElement("span");
|
||||
span.className = className;
|
||||
}
|
||||
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
|
||||
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
|
||||
document.createTextNode(val.substr(pos + text.length)),
|
||||
node.nextSibling));
|
||||
node.nodeValue = val.substr(0, pos);
|
||||
if (isInSVG) {
|
||||
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
||||
var bbox = node.parentElement.getBBox();
|
||||
rect.x.baseVal.value = bbox.x;
|
||||
rect.y.baseVal.value = bbox.y;
|
||||
rect.width.baseVal.value = bbox.width;
|
||||
rect.height.baseVal.value = bbox.height;
|
||||
rect.setAttribute('class', className);
|
||||
addItems.push({
|
||||
"parent": node.parentNode,
|
||||
"target": rect});
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!jQuery(node).is("button, select, textarea")) {
|
||||
jQuery.each(node.childNodes, function() {
|
||||
highlight(this, addItems);
|
||||
});
|
||||
}
|
||||
}
|
||||
var addItems = [];
|
||||
var result = this.each(function() {
|
||||
highlight(this, addItems);
|
||||
});
|
||||
for (var i = 0; i < addItems.length; ++i) {
|
||||
jQuery(addItems[i].parent).before(addItems[i].target);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/*
|
||||
* backward compatibility for jQuery.browser
|
||||
* This will be supported until firefox bug is fixed.
|
||||
*/
|
||||
if (!jQuery.browser) {
|
||||
jQuery.uaMatch = function(ua) {
|
||||
ua = ua.toLowerCase();
|
||||
|
||||
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(msie) ([\w.]+)/.exec(ua) ||
|
||||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
|
||||
[];
|
||||
|
||||
return {
|
||||
browser: match[ 1 ] || "",
|
||||
version: match[ 2 ] || "0"
|
||||
};
|
||||
};
|
||||
jQuery.browser = {};
|
||||
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Small JavaScript module for the documentation.
|
||||
*/
|
||||
var Documentation = {
|
||||
|
||||
init : function() {
|
||||
this.fixFirefoxAnchorBug();
|
||||
this.highlightSearchWords();
|
||||
this.initIndexTable();
|
||||
if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) {
|
||||
this.initOnKeyListeners();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* i18n support
|
||||
*/
|
||||
TRANSLATIONS : {},
|
||||
PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
|
||||
LOCALE : 'unknown',
|
||||
|
||||
// gettext and ngettext don't access this so that the functions
|
||||
// can safely bound to a different name (_ = Documentation.gettext)
|
||||
gettext : function(string) {
|
||||
var translated = Documentation.TRANSLATIONS[string];
|
||||
if (typeof translated === 'undefined')
|
||||
return string;
|
||||
return (typeof translated === 'string') ? translated : translated[0];
|
||||
},
|
||||
|
||||
ngettext : function(singular, plural, n) {
|
||||
var translated = Documentation.TRANSLATIONS[singular];
|
||||
if (typeof translated === 'undefined')
|
||||
return (n == 1) ? singular : plural;
|
||||
return translated[Documentation.PLURALEXPR(n)];
|
||||
},
|
||||
|
||||
addTranslations : function(catalog) {
|
||||
for (var key in catalog.messages)
|
||||
this.TRANSLATIONS[key] = catalog.messages[key];
|
||||
this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
|
||||
this.LOCALE = catalog.locale;
|
||||
},
|
||||
|
||||
/**
|
||||
* add context elements like header anchor links
|
||||
*/
|
||||
addContextElements : function() {
|
||||
$('div[id] > :header:first').each(function() {
|
||||
$('<a class="headerlink">\u00B6</a>').
|
||||
attr('href', '#' + this.id).
|
||||
attr('title', _('Permalink to this headline')).
|
||||
appendTo(this);
|
||||
});
|
||||
$('dt[id]').each(function() {
|
||||
$('<a class="headerlink">\u00B6</a>').
|
||||
attr('href', '#' + this.id).
|
||||
attr('title', _('Permalink to this definition')).
|
||||
appendTo(this);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* workaround a firefox stupidity
|
||||
* see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
|
||||
*/
|
||||
fixFirefoxAnchorBug : function() {
|
||||
if (document.location.hash && $.browser.mozilla)
|
||||
window.setTimeout(function() {
|
||||
document.location.href += '';
|
||||
}, 10);
|
||||
},
|
||||
|
||||
/**
|
||||
* highlight the search words provided in the url in the text
|
||||
*/
|
||||
highlightSearchWords : function() {
|
||||
var params = $.getQueryParameters();
|
||||
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
|
||||
if (terms.length) {
|
||||
var body = $('div.body');
|
||||
if (!body.length) {
|
||||
body = $('body');
|
||||
}
|
||||
window.setTimeout(function() {
|
||||
$.each(terms, function() {
|
||||
body.highlightText(this.toLowerCase(), 'highlighted');
|
||||
});
|
||||
}, 10);
|
||||
$('<p class="highlight-link"><a href="javascript:Documentation.' +
|
||||
'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
|
||||
.appendTo($('#searchbox'));
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* init the domain index toggle buttons
|
||||
*/
|
||||
initIndexTable : function() {
|
||||
var togglers = $('img.toggler').click(function() {
|
||||
var src = $(this).attr('src');
|
||||
var idnum = $(this).attr('id').substr(7);
|
||||
$('tr.cg-' + idnum).toggle();
|
||||
if (src.substr(-9) === 'minus.png')
|
||||
$(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
|
||||
else
|
||||
$(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
|
||||
}).css('display', '');
|
||||
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
|
||||
togglers.click();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* helper function to hide the search marks again
|
||||
*/
|
||||
hideSearchWords : function() {
|
||||
$('#searchbox .highlight-link').fadeOut(300);
|
||||
$('span.highlighted').removeClass('highlighted');
|
||||
var url = new URL(window.location);
|
||||
url.searchParams.delete('highlight');
|
||||
window.history.replaceState({}, '', url);
|
||||
},
|
||||
|
||||
/**
|
||||
* make the url absolute
|
||||
*/
|
||||
makeURL : function(relativeURL) {
|
||||
return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
|
||||
},
|
||||
|
||||
/**
|
||||
* get the current relative url
|
||||
*/
|
||||
getCurrentURL : function() {
|
||||
var path = document.location.pathname;
|
||||
var parts = path.split(/\//);
|
||||
$.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
|
||||
if (this === '..')
|
||||
parts.pop();
|
||||
});
|
||||
var url = parts.join('/');
|
||||
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
|
||||
},
|
||||
|
||||
initOnKeyListeners: function() {
|
||||
$(document).keydown(function(event) {
|
||||
var activeElementType = document.activeElement.tagName;
|
||||
// don't navigate when in search box, textarea, dropdown or button
|
||||
if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT'
|
||||
&& activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey
|
||||
&& !event.shiftKey) {
|
||||
switch (event.keyCode) {
|
||||
case 37: // left
|
||||
var prevHref = $('link[rel="prev"]').prop('href');
|
||||
if (prevHref) {
|
||||
window.location.href = prevHref;
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case 39: // right
|
||||
var nextHref = $('link[rel="next"]').prop('href');
|
||||
if (nextHref) {
|
||||
window.location.href = nextHref;
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// quick alias for translations
|
||||
_ = Documentation.gettext;
|
||||
|
||||
$(document).ready(function() {
|
||||
Documentation.init();
|
||||
});
|
12
esp_websocket_client/_static/documentation_options.js
Normal file
12
esp_websocket_client/_static/documentation_options.js
Normal file
@@ -0,0 +1,12 @@
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
|
||||
VERSION: 'latest',
|
||||
LANGUAGE: 'en',
|
||||
COLLAPSE_INDEX: false,
|
||||
BUILDER: 'html',
|
||||
FILE_SUFFIX: '.html',
|
||||
LINK_SUFFIX: '.html',
|
||||
HAS_SOURCE: true,
|
||||
SOURCELINK_SUFFIX: '.txt',
|
||||
NAVIGATION_WITH_KEYS: false
|
||||
};
|
77
esp_websocket_client/_static/espressif-logo.svg
Normal file
77
esp_websocket_client/_static/espressif-logo.svg
Normal file
@@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 593.3 134.2" style="enable-background:new 0 0 593.3 134.2;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FF3034;}
|
||||
.st1{fill:#666565;}
|
||||
.st2{enable-background:new ;}
|
||||
.st3{fill:#FFFEFE;}
|
||||
.st4{fill:none;stroke:#E71D16;stroke-width:3;stroke-miterlimit:10;}
|
||||
</style>
|
||||
<g id="XMLID_230_">
|
||||
<path id="XMLID_28_" class="st0" d="M61.7,90.5c0,3.6-2.9,6.5-6.5,6.5s-6.5-2.9-6.5-6.5s2.9-6.5,6.5-6.5S61.7,86.9,61.7,90.5"/>
|
||||
<path id="XMLID_27_" class="st0" d="M118.9,83.7C114.7,54,91.1,30.4,61.4,26.2c-3.5,1.8-6.7,4.2-9.5,6.9v6.3
|
||||
c29.7,0,53.8,24.1,53.8,53.8h6.3C114.7,90.4,117,87.2,118.9,83.7"/>
|
||||
<path id="XMLID_26_" class="st0" d="M123.8,63.8c0-23.5-19.1-42.6-42.6-42.6c-1.5,0-2.9,0.1-4.4,0.2l-1,2.8
|
||||
c20.9,7.3,37.5,23.9,44.9,44.8l2.8-1C123.7,66.7,123.8,65.3,123.8,63.8"/>
|
||||
<path id="XMLID_25_" class="st0" d="M81.1,96.1c1-10.6-3.7-20.4-11.6-26.4c-4.2-3.2-9.2-5.2-14.8-5.8c-1.5-0.2-2.5-1.4-2.4-2.9
|
||||
c0.1-1.3,1.2-2.3,2.6-2.4c0.1,0,0.2,0,0.3,0c6,0.6,11.6,2.7,16.2,6c10,6.9,16.1,19,14.8,32c-0.2,2.1-0.6,4-1.2,6l7.7,2.2
|
||||
c2.3-0.7,4.5-1.5,6.7-2.5c0.5-2.9,0.9-6,0.9-9.1c0-24.4-18-44.6-41.4-48c-2.8-0.4-5.7-0.4-7.7,0.1c-7.2,1.8-12.5,8.3-12.5,16.1
|
||||
c0,7.4,4.8,13.7,11.5,15.8c1.3,0.4,3.2,0.6,4.2,0.7l0,0c7.3,1.3,12.9,7.7,12.9,15.3c0,3.1-0.9,6-2.5,8.4l5.3,3.4
|
||||
c2.6,0.7,5.2,1.1,7.9,1.3C79.7,103.2,80.8,99.8,81.1,96.1"/>
|
||||
<path id="XMLID_24_" class="st0" d="M81.7,114.4c-13.5,0-26.2-5.3-35.8-14.8C36.3,90,31.1,77.3,31.1,63.8S36.4,37.6,45.9,28
|
||||
c0.7-0.7,2-0.7,2.7,0s0.7,2,0,2.7c-8.8,8.8-13.7,20.6-13.7,33.1S39.8,88,48.6,96.9c8.8,8.8,20.6,13.7,33.1,13.7s24.2-4.9,33.1-13.7
|
||||
c0.7-0.7,2-0.7,2.7,0s0.7,2,0,2.7C107.9,109.1,95.2,114.4,81.7,114.4"/>
|
||||
</g>
|
||||
<g>
|
||||
<path id="XMLID_226_" class="st1" d="M250.7,102.8V32.1c5.2,0,12.6,0,22.1,0c3,0,6-0.1,8.3,0c3.9,0.1,6.7,0.8,9.8,3.8
|
||||
c2.6,2.5,3.3,5.1,3.5,8.5c0,2.7,0,5.9,0,9.8c0,1.9,0,3.7,0,5.5c0,1.9,0.1,2.1-0.1,3.6c-0.4,3.9-2,6.1-3.7,8
|
||||
c-1.5,1.7-3.3,2.8-6.1,3.3c-2.5,0.4-6,0.3-9.5,0.3c-3.7,0-11,0-14.6,0l-0.1,27.9C260.3,102.8,250.7,102.8,250.7,102.8z M260.2,66.5
|
||||
h12.4c1.9,0,4.1,0.1,6.3-0.1c1.7-0.2,3.3-0.4,4.3-1.3c2.3-2.2,1.9-5.3,1.9-10c0-2,0-3.7-0.1-5.5c-0.1-1.5,0.3-5.4-1.5-7.3
|
||||
c-1.9-2-4.2-1.7-5.8-1.7c-1.7,0-3.3,0-5,0h-12.4L260.2,66.5z M272.8,32.1c3,0,5.8-0.1,8.3,0c3.9,0.1,6.7,0.8,9.8,3.8"/>
|
||||
<path id="XMLID_223_" class="st1" d="M349.7,102.9h-10.3c0,0-3-15.5-4.4-20.8c-1.3-4.8-3.2-6.8-4.5-7.5c-1.7-0.9-3.4-1.1-5.1-1.1
|
||||
l-12.6-0.1l0.1,29.4h-9.1V32.4c5.3,0,12.5,0,22,0c2.1,0,4.2,0,6.2,0c1.8,0,3.8,0,5.2,0.3c2.9,0.7,4.1,1.6,5.6,3.1
|
||||
c3.1,3.2,3.2,8.9,3.2,16.7c0,5.2,0.2,11.4-1.5,14.3c-1.4,2.5-3.4,3.4-7.1,4.2H337c4.4,1.2,6.7,4.1,7.8,10L349.7,102.9z M312.9,65.2
|
||||
h12.5c2.4,0,6.3,0.2,8.5-0.3c0.9-0.2,1.4-0.6,1.8-1.1c0.4-0.5,0.5-1.1,0.7-1.8c0.3-2.1,0.2-5.5,0.2-8.5c0-2.2,0-4.7-0.1-7.1
|
||||
c0-1.9-0.4-3.5-1.3-4.4c-1.2-1.2-2.6-1.2-4.8-1.3c-1.7-0.1-3.8,0-5.4,0l-12.3,0.1L312.9,65.2z"/>
|
||||
<g>
|
||||
<path class="st1" d="M188.6,94.2l-0.1,8.7c-5.7,0-14.6,0-27.3,0c-3.9,0-7.1-1.1-9.3-3.4c-2.3-2.3-3.5-5.4-3.5-9.2V44.8
|
||||
c0.1-3.9,1.2-7,3.5-9.2c2.3-2.3,5.4-3.4,9.3-3.4c12.6,0,21.7,0.1,27.3,0.1V41h-25.7c-1.9,0-3.2,0.5-3.9,1.5c-0.8,1-1.2,2.7-1.2,5
|
||||
v14.1h26.9v8.3h-26.9v17.9c0,2.4,0.4,4.1,1.2,5c0.8,1,2.1,1.5,3.9,1.5L188.6,94.2z"/>
|
||||
<path class="st1" d="M396.5,94.1l-0.1,8.7c-5.7,0-14.6,0-27.3,0c-3.9,0-7.1-1.1-9.3-3.4c-2.3-2.3-3.5-5.4-3.5-9.2V44.6
|
||||
c0.1-3.9,1.2-7,3.5-9.2c2.3-2.3,5.4-3.4,9.3-3.4c12.6,0,21.7,0.1,27.3,0.1v8.7h-25.7c-1.9,0-3.2,0.5-3.9,1.5c-0.8,1-1.2,2.7-1.2,5
|
||||
v14.1h26.9v8.3h-26.9v17.9c0,2.4,0.4,4.1,1.2,5c0.8,1,2.1,1.5,3.9,1.5L396.5,94.1z"/>
|
||||
|
||||
<image style="display:none;overflow:visible;enable-background:new ;" width="183" height="304" xlink:href="F2A76EEE96E44F61.png" transform="matrix(0.2353 0 0 0.2353 253.0778 31.2379)">
|
||||
</image>
|
||||
|
||||
<image style="display:none;overflow:visible;enable-background:new ;" width="196" height="304" xlink:href="F2A76EEE96E44F63.png" transform="matrix(0.2339 0 0 0.2339 307.7243 31.4485)">
|
||||
</image>
|
||||
<path class="st1" d="M519.1,102.7h-9.3V32.3h9.3V102.7z"/>
|
||||
<path class="st1" d="M568,40.8h-24.1c-2.2,0-3.7,0.5-4.6,1.5s-1.3,2.7-1.3,5v15.2h26.1v8.3H538v31.8h-9.3V45.3
|
||||
c0-4.1,1.2-7.4,3.5-9.7s5.5-3.4,9.4-3.4c12.3,0,20.8,0,26.4,0.1V40.8z"/>
|
||||
</g>
|
||||
<path id="XMLID_221_" class="st1" d="M225.4,71.5c-3.7-0.1-13.6,0.3-16.6-0.3c-4.6-0.8-7.3-2.8-9.2-6.1c-1.9-3.3-1.4-9.1-1.4-14.4
|
||||
c0-5.7-0.1-9.7,1.5-12.8c0.6-1.2,1.2-2.1,2.3-3c3.5-3.1,9.5-2.6,17.4-2.6c7.5,0,12.9-0.1,18.5,0v8.5c-4.9,0-13.2-0.1-20.4-0.1
|
||||
c-2.8,0-5.5-0.1-7.4,0.3c-0.4,0.1-0.6,0.2-0.9,0.4c-0.4,0.2-0.7,0.6-1,1c-0.7,1.3-0.7,3.2-0.7,5.3c0,2.3-0.2,10.5,0.5,11.6
|
||||
c1.2,2,2.7,2,4.8,2c1.3,0,5.2,0,7.8,0c3.1,0,6.7,0,8.2,0.2c2.6,0.3,4.7,1,6.2,1.8c2.1,1.1,3.2,2.4,4.3,4.2c1.2,2.1,1.4,4.2,1.4,6.9
|
||||
c0,2,0,4.7,0,6.9c0,2.5,0.1,7.1-0.3,9.6c-0.6,4.4-2.1,7.2-4.4,9.1c-1.7,1.4-3.8,2.3-6.7,2.6c-1.5,0.2-3.3,0.2-5.3,0.2
|
||||
c-1.5,0-3.2,0-5,0c-6.6,0-14.2,0-20.9,0V94c12.2,0,20,0,20.8,0c1.6,0,6.1,0,7.1,0c2.1,0,3.1-0.1,4-1c0.9-0.8,1-2.2,1-4.2
|
||||
c0-0.4,0-2.7,0-4.9c0-1.9,0-3.7,0-4.1c0-2.6,0.2-5.3-1.1-6.7C228.8,71.7,227.9,71.5,225.4,71.5z"/>
|
||||
<path id="XMLID_214_" class="st1" d="M433.3,71.5c-3.7-0.1-13.6,0.3-16.6-0.3c-4.6-0.8-7.3-2.8-9.2-6.1c-1.9-3.3-1.4-9.1-1.4-14.4
|
||||
c0-5.7-0.1-9.7,1.5-12.8c0.6-1.2,1.2-2.1,2.3-3c3.5-3.1,9.5-2.6,17.4-2.6c7.5,0,12.9-0.1,18.5,0v8.5c-4.9,0-13.2-0.1-20.4-0.1
|
||||
c-2.8,0-5.5-0.1-7.4,0.3c-0.4,0.1-0.6,0.2-0.9,0.4c-0.4,0.2-0.7,0.6-1,1c-0.7,1.3-0.7,3.2-0.7,5.3c0,2.3-0.2,10.5,0.5,11.6
|
||||
c1.2,2,2.7,2,4.8,2c1.3,0,5.2,0,7.8,0c3.1,0,6.7,0,8.2,0.2c2.6,0.3,4.7,1,6.2,1.8c2.1,1.1,3.1,2.2,4.2,4.2c1.2,2.1,1.5,4.2,1.5,6.9
|
||||
c0,2,0,4.7,0,6.9c0,2.5,0.1,7.1-0.3,9.6c-0.6,4.4-2.1,7.2-4.4,9.1c-1.7,1.4-3.8,2.3-6.7,2.6c-1.5,0.2-3.3,0.2-5.3,0.2
|
||||
c-1.5,0-3.2,0-5,0c-6.6,0-14.2,0-20.9,0V94c12.2,0,20,0,20.8,0c1.6,0,6.1,0,7.1,0c2.1,0,3.1-0.1,4-1c0.9-0.8,1-2.2,1-4.2
|
||||
c0-0.4,0-2.7,0-4.9c0-1.9,0-3.7,0-4.1c0-2.6,0.2-5.3-1.1-6.7C436.7,71.7,435.8,71.5,433.3,71.5z"/>
|
||||
<path id="XMLID_212_" class="st1" d="M484.6,71.5c-3.7-0.1-13.6,0.3-16.6-0.3c-4.6-0.8-7.3-2.8-9.2-6.1c-1.9-3.3-1.4-9.1-1.4-14.4
|
||||
c0-5.7-0.1-9.7,1.5-12.8c0.6-1.2,1.2-2.1,2.3-3c3.5-3.1,9.5-2.6,17.4-2.6c7.5,0,12.9-0.1,18.5,0v8.5c-4.9,0-13.2-0.1-20.4-0.1
|
||||
c-2.8,0-5.5-0.1-7.4,0.3c-0.4,0.1-0.6,0.2-0.9,0.4c-0.4,0.2-0.7,0.6-1,1c-0.7,1.3-0.7,3.2-0.7,5.3c0,2.3-0.2,10.5,0.5,11.6
|
||||
c1.2,2,2.7,2,4.8,2c1.3,0,5.2,0,7.8,0c3.1,0,6.7,0,8.2,0.2c2.6,0.3,4.7,1,6.2,1.8c2.1,1.1,3.1,2.2,4.2,4.2c1.2,2.1,1.5,4.2,1.5,6.9
|
||||
c0,2,0,4.7,0,6.9c0,2.5,0.1,7.1-0.3,9.6c-0.6,4.4-2.1,7.2-4.4,9.1c-1.7,1.4-3.8,2.3-6.7,2.6c-1.5,0.2-3.3,0.2-5.3,0.2
|
||||
c-1.5,0-3.2,0-5,0c-6.6,0-14.2,0-20.9,0V94c12.2,0,20,0,20.8,0c1.6,0,6.1,0,7.1,0c2.1,0,3.1-0.1,4-1c0.9-0.8,1-2.2,1-4.2
|
||||
c0-0.4,0-2.7,0-4.9c0-1.9,0-3.7,0-4.1c0-2.6,0.2-5.3-1.1-6.7C488,71.7,487.1,71.5,484.6,71.5z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6.8 KiB |
785
esp_websocket_client/_static/espressif2.pdf
Normal file
785
esp_websocket_client/_static/espressif2.pdf
Normal file
File diff suppressed because one or more lines are too long
BIN
esp_websocket_client/_static/file.png
Normal file
BIN
esp_websocket_client/_static/file.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 286 B |
10872
esp_websocket_client/_static/jquery-3.5.1.js
vendored
Normal file
10872
esp_websocket_client/_static/jquery-3.5.1.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2
esp_websocket_client/_static/jquery.js
vendored
Normal file
2
esp_websocket_client/_static/jquery.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
esp_websocket_client/_static/js/badge_only.js
Normal file
1
esp_websocket_client/_static/js/badge_only.js
Normal file
@@ -0,0 +1 @@
|
||||
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=46)}({46:function(e,t,r){}});
|
4
esp_websocket_client/_static/js/html5shiv-printshiv.min.js
vendored
Normal file
4
esp_websocket_client/_static/js/html5shiv-printshiv.min.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
/**
|
||||
* @preserve HTML5 Shiv 3.7.3-pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
|
||||
*/
|
||||
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document);
|
4
esp_websocket_client/_static/js/html5shiv.min.js
vendored
Normal file
4
esp_websocket_client/_static/js/html5shiv.min.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
/**
|
||||
* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
|
||||
*/
|
||||
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document);
|
1
esp_websocket_client/_static/js/theme.js
Normal file
1
esp_websocket_client/_static/js/theme.js
Normal file
File diff suppressed because one or more lines are too long
297
esp_websocket_client/_static/language_data.js
Normal file
297
esp_websocket_client/_static/language_data.js
Normal file
@@ -0,0 +1,297 @@
|
||||
/*
|
||||
* language_data.js
|
||||
* ~~~~~~~~~~~~~~~~
|
||||
*
|
||||
* This script contains the language-specific data used by searchtools.js,
|
||||
* namely the list of stopwords, stemmer, scorer and splitter.
|
||||
*
|
||||
* :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
|
||||
|
||||
|
||||
/* Non-minified version is copied as a separate JS file, is available */
|
||||
|
||||
/**
|
||||
* Porter Stemmer
|
||||
*/
|
||||
var Stemmer = function() {
|
||||
|
||||
var step2list = {
|
||||
ational: 'ate',
|
||||
tional: 'tion',
|
||||
enci: 'ence',
|
||||
anci: 'ance',
|
||||
izer: 'ize',
|
||||
bli: 'ble',
|
||||
alli: 'al',
|
||||
entli: 'ent',
|
||||
eli: 'e',
|
||||
ousli: 'ous',
|
||||
ization: 'ize',
|
||||
ation: 'ate',
|
||||
ator: 'ate',
|
||||
alism: 'al',
|
||||
iveness: 'ive',
|
||||
fulness: 'ful',
|
||||
ousness: 'ous',
|
||||
aliti: 'al',
|
||||
iviti: 'ive',
|
||||
biliti: 'ble',
|
||||
logi: 'log'
|
||||
};
|
||||
|
||||
var step3list = {
|
||||
icate: 'ic',
|
||||
ative: '',
|
||||
alize: 'al',
|
||||
iciti: 'ic',
|
||||
ical: 'ic',
|
||||
ful: '',
|
||||
ness: ''
|
||||
};
|
||||
|
||||
var c = "[^aeiou]"; // consonant
|
||||
var v = "[aeiouy]"; // vowel
|
||||
var C = c + "[^aeiouy]*"; // consonant sequence
|
||||
var V = v + "[aeiou]*"; // vowel sequence
|
||||
|
||||
var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
|
||||
var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
|
||||
var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
|
||||
var s_v = "^(" + C + ")?" + v; // vowel in stem
|
||||
|
||||
this.stemWord = function (w) {
|
||||
var stem;
|
||||
var suffix;
|
||||
var firstch;
|
||||
var origword = w;
|
||||
|
||||
if (w.length < 3)
|
||||
return w;
|
||||
|
||||
var re;
|
||||
var re2;
|
||||
var re3;
|
||||
var re4;
|
||||
|
||||
firstch = w.substr(0,1);
|
||||
if (firstch == "y")
|
||||
w = firstch.toUpperCase() + w.substr(1);
|
||||
|
||||
// Step 1a
|
||||
re = /^(.+?)(ss|i)es$/;
|
||||
re2 = /^(.+?)([^s])s$/;
|
||||
|
||||
if (re.test(w))
|
||||
w = w.replace(re,"$1$2");
|
||||
else if (re2.test(w))
|
||||
w = w.replace(re2,"$1$2");
|
||||
|
||||
// Step 1b
|
||||
re = /^(.+?)eed$/;
|
||||
re2 = /^(.+?)(ed|ing)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
re = new RegExp(mgr0);
|
||||
if (re.test(fp[1])) {
|
||||
re = /.$/;
|
||||
w = w.replace(re,"");
|
||||
}
|
||||
}
|
||||
else if (re2.test(w)) {
|
||||
var fp = re2.exec(w);
|
||||
stem = fp[1];
|
||||
re2 = new RegExp(s_v);
|
||||
if (re2.test(stem)) {
|
||||
w = stem;
|
||||
re2 = /(at|bl|iz)$/;
|
||||
re3 = new RegExp("([^aeiouylsz])\\1$");
|
||||
re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
|
||||
if (re2.test(w))
|
||||
w = w + "e";
|
||||
else if (re3.test(w)) {
|
||||
re = /.$/;
|
||||
w = w.replace(re,"");
|
||||
}
|
||||
else if (re4.test(w))
|
||||
w = w + "e";
|
||||
}
|
||||
}
|
||||
|
||||
// Step 1c
|
||||
re = /^(.+?)y$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
re = new RegExp(s_v);
|
||||
if (re.test(stem))
|
||||
w = stem + "i";
|
||||
}
|
||||
|
||||
// Step 2
|
||||
re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
suffix = fp[2];
|
||||
re = new RegExp(mgr0);
|
||||
if (re.test(stem))
|
||||
w = stem + step2list[suffix];
|
||||
}
|
||||
|
||||
// Step 3
|
||||
re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
suffix = fp[2];
|
||||
re = new RegExp(mgr0);
|
||||
if (re.test(stem))
|
||||
w = stem + step3list[suffix];
|
||||
}
|
||||
|
||||
// Step 4
|
||||
re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
|
||||
re2 = /^(.+?)(s|t)(ion)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
re = new RegExp(mgr1);
|
||||
if (re.test(stem))
|
||||
w = stem;
|
||||
}
|
||||
else if (re2.test(w)) {
|
||||
var fp = re2.exec(w);
|
||||
stem = fp[1] + fp[2];
|
||||
re2 = new RegExp(mgr1);
|
||||
if (re2.test(stem))
|
||||
w = stem;
|
||||
}
|
||||
|
||||
// Step 5
|
||||
re = /^(.+?)e$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
re = new RegExp(mgr1);
|
||||
re2 = new RegExp(meq1);
|
||||
re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
|
||||
if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
|
||||
w = stem;
|
||||
}
|
||||
re = /ll$/;
|
||||
re2 = new RegExp(mgr1);
|
||||
if (re.test(w) && re2.test(w)) {
|
||||
re = /.$/;
|
||||
w = w.replace(re,"");
|
||||
}
|
||||
|
||||
// and turn initial Y back to y
|
||||
if (firstch == "y")
|
||||
w = firstch.toLowerCase() + w.substr(1);
|
||||
return w;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
var splitChars = (function() {
|
||||
var result = {};
|
||||
var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
|
||||
1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
|
||||
2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
|
||||
2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
|
||||
3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
|
||||
3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
|
||||
4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
|
||||
8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
|
||||
11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
|
||||
43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
|
||||
var i, j, start, end;
|
||||
for (i = 0; i < singles.length; i++) {
|
||||
result[singles[i]] = true;
|
||||
}
|
||||
var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
|
||||
[722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
|
||||
[1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
|
||||
[1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
|
||||
[1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
|
||||
[2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
|
||||
[2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
|
||||
[2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
|
||||
[2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
|
||||
[2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
|
||||
[2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
|
||||
[2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
|
||||
[3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
|
||||
[3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
|
||||
[3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
|
||||
[3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
|
||||
[3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
|
||||
[3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
|
||||
[4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
|
||||
[4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
|
||||
[4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
|
||||
[4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
|
||||
[5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
|
||||
[6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
|
||||
[6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
|
||||
[6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
|
||||
[6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
|
||||
[7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
|
||||
[7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
|
||||
[8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
|
||||
[8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
|
||||
[8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
|
||||
[10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
|
||||
[11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
|
||||
[12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
|
||||
[12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
|
||||
[12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
|
||||
[19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
|
||||
[42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
|
||||
[42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
|
||||
[43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
|
||||
[43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
|
||||
[43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
|
||||
[43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
|
||||
[44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
|
||||
[57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
|
||||
[64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
|
||||
[65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
|
||||
[65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
|
||||
for (i = 0; i < ranges.length; i++) {
|
||||
start = ranges[i][0];
|
||||
end = ranges[i][1];
|
||||
for (j = start; j <= end; j++) {
|
||||
result[j] = true;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
})();
|
||||
|
||||
function splitQuery(query) {
|
||||
var result = [];
|
||||
var start = -1;
|
||||
for (var i = 0; i < query.length; i++) {
|
||||
if (splitChars[query.charCodeAt(i)]) {
|
||||
if (start !== -1) {
|
||||
result.push(query.slice(start, i));
|
||||
start = -1;
|
||||
}
|
||||
} else if (start === -1) {
|
||||
start = i;
|
||||
}
|
||||
}
|
||||
if (start !== -1) {
|
||||
result.push(query.slice(start));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
BIN
esp_websocket_client/_static/minus.png
Normal file
BIN
esp_websocket_client/_static/minus.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 90 B |
BIN
esp_websocket_client/_static/plus.png
Normal file
BIN
esp_websocket_client/_static/plus.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 90 B |
69
esp_websocket_client/_static/pygments.css
Normal file
69
esp_websocket_client/_static/pygments.css
Normal file
@@ -0,0 +1,69 @@
|
||||
.highlight .hll { background-color: #ffffcc }
|
||||
.highlight { background: #eeffcc; }
|
||||
.highlight .c { color: #408090; font-style: italic } /* Comment */
|
||||
.highlight .err { border: 1px solid #FF0000 } /* Error */
|
||||
.highlight .k { color: #007020; font-weight: bold } /* Keyword */
|
||||
.highlight .o { color: #666666 } /* Operator */
|
||||
.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */
|
||||
.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
|
||||
.highlight .cp { color: #007020 } /* Comment.Preproc */
|
||||
.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */
|
||||
.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
|
||||
.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
|
||||
.highlight .gd { color: #A00000 } /* Generic.Deleted */
|
||||
.highlight .ge { font-style: italic } /* Generic.Emph */
|
||||
.highlight .gr { color: #FF0000 } /* Generic.Error */
|
||||
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
||||
.highlight .gi { color: #00A000 } /* Generic.Inserted */
|
||||
.highlight .go { color: #333333 } /* Generic.Output */
|
||||
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
|
||||
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
||||
.highlight .gt { color: #0044DD } /* Generic.Traceback */
|
||||
.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
|
||||
.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
|
||||
.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
|
||||
.highlight .kp { color: #007020 } /* Keyword.Pseudo */
|
||||
.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #902000 } /* Keyword.Type */
|
||||
.highlight .m { color: #208050 } /* Literal.Number */
|
||||
.highlight .s { color: #4070a0 } /* Literal.String */
|
||||
.highlight .na { color: #4070a0 } /* Name.Attribute */
|
||||
.highlight .nb { color: #007020 } /* Name.Builtin */
|
||||
.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
|
||||
.highlight .no { color: #60add5 } /* Name.Constant */
|
||||
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
|
||||
.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
|
||||
.highlight .ne { color: #007020 } /* Name.Exception */
|
||||
.highlight .nf { color: #06287e } /* Name.Function */
|
||||
.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
|
||||
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
|
||||
.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
|
||||
.highlight .nv { color: #bb60d5 } /* Name.Variable */
|
||||
.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
|
||||
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
||||
.highlight .mb { color: #208050 } /* Literal.Number.Bin */
|
||||
.highlight .mf { color: #208050 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #208050 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #208050 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #208050 } /* Literal.Number.Oct */
|
||||
.highlight .sa { color: #4070a0 } /* Literal.String.Affix */
|
||||
.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #4070a0 } /* Literal.String.Char */
|
||||
.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */
|
||||
.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
|
||||
.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #c65d09 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #235388 } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #517918 } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
|
||||
.highlight .fm { color: #06287e } /* Name.Function.Magic */
|
||||
.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
|
||||
.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */
|
||||
.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
|
529
esp_websocket_client/_static/searchtools.js
Normal file
529
esp_websocket_client/_static/searchtools.js
Normal file
@@ -0,0 +1,529 @@
|
||||
/*
|
||||
* searchtools.js
|
||||
* ~~~~~~~~~~~~~~~~
|
||||
*
|
||||
* Sphinx JavaScript utilities for the full-text search.
|
||||
*
|
||||
* :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
if (!Scorer) {
|
||||
/**
|
||||
* Simple result scoring code.
|
||||
*/
|
||||
var Scorer = {
|
||||
// Implement the following function to further tweak the score for each result
|
||||
// The function takes a result array [filename, title, anchor, descr, score]
|
||||
// and returns the new score.
|
||||
/*
|
||||
score: function(result) {
|
||||
return result[4];
|
||||
},
|
||||
*/
|
||||
|
||||
// query matches the full name of an object
|
||||
objNameMatch: 11,
|
||||
// or matches in the last dotted part of the object name
|
||||
objPartialMatch: 6,
|
||||
// Additive scores depending on the priority of the object
|
||||
objPrio: {0: 15, // used to be importantResults
|
||||
1: 5, // used to be objectResults
|
||||
2: -5}, // used to be unimportantResults
|
||||
// Used when the priority is not in the mapping.
|
||||
objPrioDefault: 0,
|
||||
|
||||
// query found in title
|
||||
title: 15,
|
||||
partialTitle: 7,
|
||||
// query found in terms
|
||||
term: 5,
|
||||
partialTerm: 2
|
||||
};
|
||||
}
|
||||
|
||||
if (!splitQuery) {
|
||||
function splitQuery(query) {
|
||||
return query.split(/\s+/);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Search Module
|
||||
*/
|
||||
var Search = {
|
||||
|
||||
_index : null,
|
||||
_queued_query : null,
|
||||
_pulse_status : -1,
|
||||
|
||||
htmlToText : function(htmlString) {
|
||||
var virtualDocument = document.implementation.createHTMLDocument('virtual');
|
||||
var htmlElement = $(htmlString, virtualDocument);
|
||||
htmlElement.find('.headerlink').remove();
|
||||
docContent = htmlElement.find('[role=main]')[0];
|
||||
if(docContent === undefined) {
|
||||
console.warn("Content block not found. Sphinx search tries to obtain it " +
|
||||
"via '[role=main]'. Could you check your theme or template.");
|
||||
return "";
|
||||
}
|
||||
return docContent.textContent || docContent.innerText;
|
||||
},
|
||||
|
||||
init : function() {
|
||||
var params = $.getQueryParameters();
|
||||
if (params.q) {
|
||||
var query = params.q[0];
|
||||
$('input[name="q"]')[0].value = query;
|
||||
this.performSearch(query);
|
||||
}
|
||||
},
|
||||
|
||||
loadIndex : function(url) {
|
||||
$.ajax({type: "GET", url: url, data: null,
|
||||
dataType: "script", cache: true,
|
||||
complete: function(jqxhr, textstatus) {
|
||||
if (textstatus != "success") {
|
||||
document.getElementById("searchindexloader").src = url;
|
||||
}
|
||||
}});
|
||||
},
|
||||
|
||||
setIndex : function(index) {
|
||||
var q;
|
||||
this._index = index;
|
||||
if ((q = this._queued_query) !== null) {
|
||||
this._queued_query = null;
|
||||
Search.query(q);
|
||||
}
|
||||
},
|
||||
|
||||
hasIndex : function() {
|
||||
return this._index !== null;
|
||||
},
|
||||
|
||||
deferQuery : function(query) {
|
||||
this._queued_query = query;
|
||||
},
|
||||
|
||||
stopPulse : function() {
|
||||
this._pulse_status = 0;
|
||||
},
|
||||
|
||||
startPulse : function() {
|
||||
if (this._pulse_status >= 0)
|
||||
return;
|
||||
function pulse() {
|
||||
var i;
|
||||
Search._pulse_status = (Search._pulse_status + 1) % 4;
|
||||
var dotString = '';
|
||||
for (i = 0; i < Search._pulse_status; i++)
|
||||
dotString += '.';
|
||||
Search.dots.text(dotString);
|
||||
if (Search._pulse_status > -1)
|
||||
window.setTimeout(pulse, 500);
|
||||
}
|
||||
pulse();
|
||||
},
|
||||
|
||||
/**
|
||||
* perform a search for something (or wait until index is loaded)
|
||||
*/
|
||||
performSearch : function(query) {
|
||||
// create the required interface elements
|
||||
this.out = $('#search-results');
|
||||
this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
|
||||
this.dots = $('<span></span>').appendTo(this.title);
|
||||
this.status = $('<p class="search-summary"> </p>').appendTo(this.out);
|
||||
this.output = $('<ul class="search"/>').appendTo(this.out);
|
||||
|
||||
$('#search-progress').text(_('Preparing search...'));
|
||||
this.startPulse();
|
||||
|
||||
// index already loaded, the browser was quick!
|
||||
if (this.hasIndex())
|
||||
this.query(query);
|
||||
else
|
||||
this.deferQuery(query);
|
||||
},
|
||||
|
||||
/**
|
||||
* execute search (requires search index to be loaded)
|
||||
*/
|
||||
query : function(query) {
|
||||
var i;
|
||||
|
||||
// stem the searchterms and add them to the correct list
|
||||
var stemmer = new Stemmer();
|
||||
var searchterms = [];
|
||||
var excluded = [];
|
||||
var hlterms = [];
|
||||
var tmp = splitQuery(query);
|
||||
var objectterms = [];
|
||||
for (i = 0; i < tmp.length; i++) {
|
||||
if (tmp[i] !== "") {
|
||||
objectterms.push(tmp[i].toLowerCase());
|
||||
}
|
||||
|
||||
if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i] === "") {
|
||||
// skip this "word"
|
||||
continue;
|
||||
}
|
||||
// stem the word
|
||||
var word = stemmer.stemWord(tmp[i].toLowerCase());
|
||||
// prevent stemmer from cutting word smaller than two chars
|
||||
if(word.length < 3 && tmp[i].length >= 3) {
|
||||
word = tmp[i];
|
||||
}
|
||||
var toAppend;
|
||||
// select the correct list
|
||||
if (word[0] == '-') {
|
||||
toAppend = excluded;
|
||||
word = word.substr(1);
|
||||
}
|
||||
else {
|
||||
toAppend = searchterms;
|
||||
hlterms.push(tmp[i].toLowerCase());
|
||||
}
|
||||
// only add if not already in the list
|
||||
if (!$u.contains(toAppend, word))
|
||||
toAppend.push(word);
|
||||
}
|
||||
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
|
||||
|
||||
// console.debug('SEARCH: searching for:');
|
||||
// console.info('required: ', searchterms);
|
||||
// console.info('excluded: ', excluded);
|
||||
|
||||
// prepare search
|
||||
var terms = this._index.terms;
|
||||
var titleterms = this._index.titleterms;
|
||||
|
||||
// array of [filename, title, anchor, descr, score]
|
||||
var results = [];
|
||||
$('#search-progress').empty();
|
||||
|
||||
// lookup as object
|
||||
for (i = 0; i < objectterms.length; i++) {
|
||||
var others = [].concat(objectterms.slice(0, i),
|
||||
objectterms.slice(i+1, objectterms.length));
|
||||
results = results.concat(this.performObjectSearch(objectterms[i], others));
|
||||
}
|
||||
|
||||
// lookup as search terms in fulltext
|
||||
results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
|
||||
|
||||
// let the scorer override scores with a custom scoring function
|
||||
if (Scorer.score) {
|
||||
for (i = 0; i < results.length; i++)
|
||||
results[i][4] = Scorer.score(results[i]);
|
||||
}
|
||||
|
||||
// now sort the results by score (in opposite order of appearance, since the
|
||||
// display function below uses pop() to retrieve items) and then
|
||||
// alphabetically
|
||||
results.sort(function(a, b) {
|
||||
var left = a[4];
|
||||
var right = b[4];
|
||||
if (left > right) {
|
||||
return 1;
|
||||
} else if (left < right) {
|
||||
return -1;
|
||||
} else {
|
||||
// same score: sort alphabetically
|
||||
left = a[1].toLowerCase();
|
||||
right = b[1].toLowerCase();
|
||||
return (left > right) ? -1 : ((left < right) ? 1 : 0);
|
||||
}
|
||||
});
|
||||
|
||||
// for debugging
|
||||
//Search.lastresults = results.slice(); // a copy
|
||||
//console.info('search results:', Search.lastresults);
|
||||
|
||||
// print the results
|
||||
var resultCount = results.length;
|
||||
function displayNextItem() {
|
||||
// results left, load the summary and display it
|
||||
if (results.length) {
|
||||
var item = results.pop();
|
||||
var listItem = $('<li></li>');
|
||||
var requestUrl = "";
|
||||
var linkUrl = "";
|
||||
if (DOCUMENTATION_OPTIONS.BUILDER === 'dirhtml') {
|
||||
// dirhtml builder
|
||||
var dirname = item[0] + '/';
|
||||
if (dirname.match(/\/index\/$/)) {
|
||||
dirname = dirname.substring(0, dirname.length-6);
|
||||
} else if (dirname == 'index/') {
|
||||
dirname = '';
|
||||
}
|
||||
requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + dirname;
|
||||
linkUrl = requestUrl;
|
||||
|
||||
} else {
|
||||
// normal html builders
|
||||
requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX;
|
||||
linkUrl = item[0] + DOCUMENTATION_OPTIONS.LINK_SUFFIX;
|
||||
}
|
||||
listItem.append($('<a/>').attr('href',
|
||||
linkUrl +
|
||||
highlightstring + item[2]).html(item[1]));
|
||||
if (item[3]) {
|
||||
listItem.append($('<span> (' + item[3] + ')</span>'));
|
||||
Search.output.append(listItem);
|
||||
setTimeout(function() {
|
||||
displayNextItem();
|
||||
}, 5);
|
||||
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
|
||||
$.ajax({url: requestUrl,
|
||||
dataType: "text",
|
||||
complete: function(jqxhr, textstatus) {
|
||||
var data = jqxhr.responseText;
|
||||
if (data !== '' && data !== undefined) {
|
||||
var summary = Search.makeSearchSummary(data, searchterms, hlterms);
|
||||
if (summary) {
|
||||
listItem.append(summary);
|
||||
}
|
||||
}
|
||||
Search.output.append(listItem);
|
||||
setTimeout(function() {
|
||||
displayNextItem();
|
||||
}, 5);
|
||||
}});
|
||||
} else {
|
||||
// no source available, just display title
|
||||
Search.output.append(listItem);
|
||||
setTimeout(function() {
|
||||
displayNextItem();
|
||||
}, 5);
|
||||
}
|
||||
}
|
||||
// search finished, update title and status message
|
||||
else {
|
||||
Search.stopPulse();
|
||||
Search.title.text(_('Search Results'));
|
||||
if (!resultCount)
|
||||
Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
|
||||
else
|
||||
Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
|
||||
Search.status.fadeIn(500);
|
||||
}
|
||||
}
|
||||
displayNextItem();
|
||||
},
|
||||
|
||||
/**
|
||||
* search for object names
|
||||
*/
|
||||
performObjectSearch : function(object, otherterms) {
|
||||
var filenames = this._index.filenames;
|
||||
var docnames = this._index.docnames;
|
||||
var objects = this._index.objects;
|
||||
var objnames = this._index.objnames;
|
||||
var titles = this._index.titles;
|
||||
|
||||
var i;
|
||||
var results = [];
|
||||
|
||||
for (var prefix in objects) {
|
||||
for (var iMatch = 0; iMatch != objects[prefix].length; ++iMatch) {
|
||||
var match = objects[prefix][iMatch];
|
||||
var name = match[4];
|
||||
var fullname = (prefix ? prefix + '.' : '') + name;
|
||||
var fullnameLower = fullname.toLowerCase()
|
||||
if (fullnameLower.indexOf(object) > -1) {
|
||||
var score = 0;
|
||||
var parts = fullnameLower.split('.');
|
||||
// check for different match types: exact matches of full name or
|
||||
// "last name" (i.e. last dotted part)
|
||||
if (fullnameLower == object || parts[parts.length - 1] == object) {
|
||||
score += Scorer.objNameMatch;
|
||||
// matches in last name
|
||||
} else if (parts[parts.length - 1].indexOf(object) > -1) {
|
||||
score += Scorer.objPartialMatch;
|
||||
}
|
||||
var objname = objnames[match[1]][2];
|
||||
var title = titles[match[0]];
|
||||
// If more than one term searched for, we require other words to be
|
||||
// found in the name/title/description
|
||||
if (otherterms.length > 0) {
|
||||
var haystack = (prefix + ' ' + name + ' ' +
|
||||
objname + ' ' + title).toLowerCase();
|
||||
var allfound = true;
|
||||
for (i = 0; i < otherterms.length; i++) {
|
||||
if (haystack.indexOf(otherterms[i]) == -1) {
|
||||
allfound = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!allfound) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
var descr = objname + _(', in ') + title;
|
||||
|
||||
var anchor = match[3];
|
||||
if (anchor === '')
|
||||
anchor = fullname;
|
||||
else if (anchor == '-')
|
||||
anchor = objnames[match[1]][1] + '-' + fullname;
|
||||
// add custom score for some objects according to scorer
|
||||
if (Scorer.objPrio.hasOwnProperty(match[2])) {
|
||||
score += Scorer.objPrio[match[2]];
|
||||
} else {
|
||||
score += Scorer.objPrioDefault;
|
||||
}
|
||||
results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return results;
|
||||
},
|
||||
|
||||
/**
|
||||
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
|
||||
*/
|
||||
escapeRegExp : function(string) {
|
||||
return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
|
||||
},
|
||||
|
||||
/**
|
||||
* search for full-text terms in the index
|
||||
*/
|
||||
performTermsSearch : function(searchterms, excluded, terms, titleterms) {
|
||||
var docnames = this._index.docnames;
|
||||
var filenames = this._index.filenames;
|
||||
var titles = this._index.titles;
|
||||
|
||||
var i, j, file;
|
||||
var fileMap = {};
|
||||
var scoreMap = {};
|
||||
var results = [];
|
||||
|
||||
// perform the search on the required terms
|
||||
for (i = 0; i < searchterms.length; i++) {
|
||||
var word = searchterms[i];
|
||||
var files = [];
|
||||
var _o = [
|
||||
{files: terms[word], score: Scorer.term},
|
||||
{files: titleterms[word], score: Scorer.title}
|
||||
];
|
||||
// add support for partial matches
|
||||
if (word.length > 2) {
|
||||
var word_regex = this.escapeRegExp(word);
|
||||
for (var w in terms) {
|
||||
if (w.match(word_regex) && !terms[word]) {
|
||||
_o.push({files: terms[w], score: Scorer.partialTerm})
|
||||
}
|
||||
}
|
||||
for (var w in titleterms) {
|
||||
if (w.match(word_regex) && !titleterms[word]) {
|
||||
_o.push({files: titleterms[w], score: Scorer.partialTitle})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// no match but word was a required one
|
||||
if ($u.every(_o, function(o){return o.files === undefined;})) {
|
||||
break;
|
||||
}
|
||||
// found search word in contents
|
||||
$u.each(_o, function(o) {
|
||||
var _files = o.files;
|
||||
if (_files === undefined)
|
||||
return
|
||||
|
||||
if (_files.length === undefined)
|
||||
_files = [_files];
|
||||
files = files.concat(_files);
|
||||
|
||||
// set score for the word in each file to Scorer.term
|
||||
for (j = 0; j < _files.length; j++) {
|
||||
file = _files[j];
|
||||
if (!(file in scoreMap))
|
||||
scoreMap[file] = {};
|
||||
scoreMap[file][word] = o.score;
|
||||
}
|
||||
});
|
||||
|
||||
// create the mapping
|
||||
for (j = 0; j < files.length; j++) {
|
||||
file = files[j];
|
||||
if (file in fileMap && fileMap[file].indexOf(word) === -1)
|
||||
fileMap[file].push(word);
|
||||
else
|
||||
fileMap[file] = [word];
|
||||
}
|
||||
}
|
||||
|
||||
// now check if the files don't contain excluded terms
|
||||
for (file in fileMap) {
|
||||
var valid = true;
|
||||
|
||||
// check if all requirements are matched
|
||||
var filteredTermCount = // as search terms with length < 3 are discarded: ignore
|
||||
searchterms.filter(function(term){return term.length > 2}).length
|
||||
if (
|
||||
fileMap[file].length != searchterms.length &&
|
||||
fileMap[file].length != filteredTermCount
|
||||
) continue;
|
||||
|
||||
// ensure that none of the excluded terms is in the search result
|
||||
for (i = 0; i < excluded.length; i++) {
|
||||
if (terms[excluded[i]] == file ||
|
||||
titleterms[excluded[i]] == file ||
|
||||
$u.contains(terms[excluded[i]] || [], file) ||
|
||||
$u.contains(titleterms[excluded[i]] || [], file)) {
|
||||
valid = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// if we have still a valid result we can add it to the result list
|
||||
if (valid) {
|
||||
// select one (max) score for the file.
|
||||
// for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
|
||||
var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
|
||||
results.push([docnames[file], titles[file], '', null, score, filenames[file]]);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
},
|
||||
|
||||
/**
|
||||
* helper function to return a node containing the
|
||||
* search summary for a given text. keywords is a list
|
||||
* of stemmed words, hlwords is the list of normal, unstemmed
|
||||
* words. the first one is used to find the occurrence, the
|
||||
* latter for highlighting it.
|
||||
*/
|
||||
makeSearchSummary : function(htmlText, keywords, hlwords) {
|
||||
var text = Search.htmlToText(htmlText);
|
||||
if (text == "") {
|
||||
return null;
|
||||
}
|
||||
var textLower = text.toLowerCase();
|
||||
var start = 0;
|
||||
$.each(keywords, function() {
|
||||
var i = textLower.indexOf(this.toLowerCase());
|
||||
if (i > -1)
|
||||
start = i;
|
||||
});
|
||||
start = Math.max(start - 120, 0);
|
||||
var excerpt = ((start > 0) ? '...' : '') +
|
||||
$.trim(text.substr(start, 240)) +
|
||||
((start + 240 - text.length) ? '...' : '');
|
||||
var rv = $('<p class="context"></p>').text(excerpt);
|
||||
$.each(hlwords, function() {
|
||||
rv = rv.highlightText(this, 'highlighted');
|
||||
});
|
||||
return rv;
|
||||
}
|
||||
};
|
||||
|
||||
$(document).ready(function() {
|
||||
Search.init();
|
||||
});
|
56
esp_websocket_client/_static/theme_overrides.css
Normal file
56
esp_websocket_client/_static/theme_overrides.css
Normal file
@@ -0,0 +1,56 @@
|
||||
/* override table width restrictions */
|
||||
@media screen and (min-width: 767px) {
|
||||
|
||||
.wy-table-responsive table td {
|
||||
/* !important prevents the common CSS stylesheets from overriding
|
||||
this as on RTD they are loaded after this stylesheet */
|
||||
white-space: normal !important;
|
||||
}
|
||||
|
||||
.wy-table-responsive {
|
||||
overflow: visible !important;
|
||||
}
|
||||
}
|
||||
|
||||
.wy-side-nav-search {
|
||||
background-color: #e3e3e3 !important;
|
||||
}
|
||||
|
||||
.wy-side-nav-search input[type=text] {
|
||||
border-radius: 0px !important;
|
||||
border-color: #333333 !important;
|
||||
}
|
||||
|
||||
.icon-home {
|
||||
color: #333333 !important;
|
||||
}
|
||||
|
||||
.icon-home:hover {
|
||||
background-color: #d6d6d6 !important;
|
||||
}
|
||||
|
||||
.version {
|
||||
color: #000000 !important;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #bd2c2a !important;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 240px !important;
|
||||
}
|
||||
|
||||
/* For space between the return type and function name */
|
||||
a.internal + code.descname::before {
|
||||
content: ' ';
|
||||
}
|
||||
|
||||
/* For space between the arguments of the function */
|
||||
a.internal + em::before {
|
||||
content: ' ';
|
||||
}
|
||||
|
||||
.tool-sha256 {
|
||||
word-break: break-all;
|
||||
}
|
2042
esp_websocket_client/_static/underscore-1.13.1.js
Normal file
2042
esp_websocket_client/_static/underscore-1.13.1.js
Normal file
File diff suppressed because it is too large
Load Diff
6
esp_websocket_client/_static/underscore.js
Normal file
6
esp_websocket_client/_static/underscore.js
Normal file
File diff suppressed because one or more lines are too long
378
esp_websocket_client/genindex.html
Normal file
378
esp_websocket_client/genindex.html
Normal file
@@ -0,0 +1,378 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Index - ESP32 - — ESP-Protocols latest documentation</title>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||||
<script src="_static/jquery.js"></script>
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
<script src="_static/clipboard.min.js"></script>
|
||||
<script src="_static/copybutton.js"></script>
|
||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
DOCUMENTATION_OPTIONS.PAGENAME = 'genindex';
|
||||
DOCUMENTATION_OPTIONS.PROJECT_SLUG = 'esp-idf';
|
||||
DOCUMENTATION_OPTIONS.VERSIONS_URL = 'https://dl.espressif.com/dl/esp-idf/idf_versions.js';
|
||||
DOCUMENTATION_OPTIONS.LANGUAGES = ["en"];
|
||||
DOCUMENTATION_OPTIONS.IDF_TARGET = 'esp32';
|
||||
DOCUMENTATION_OPTIONS.HAS_IDF_TARGETS = ["esp32"]
|
||||
DOCUMENTATION_OPTIONS.RELEASE = 'latest';
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" src="https://dl.espressif.com/dl/esp-idf/idf_versions.js"></script>
|
||||
|
||||
|
||||
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/copybutton.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/theme_overrides.css" type="text/css" />
|
||||
<link rel="index" title="Index" href="#" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home" alt="Documentation Home"> ESP-Protocols
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="_static/espressif-logo.svg" class="logo" alt="Logo"/>
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
<div class="selectors">
|
||||
<select id="target-select" style="width: 150px;" hidden>
|
||||
<option value="" disabled selected>Choose target...</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="selectors">
|
||||
<select id="version-select" style="width: 150px;" hidden>
|
||||
<option value="" disabled selected>Choose version...</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Local TOC -->
|
||||
<div class="local-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">ESP-Protocols</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li>Index</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
|
||||
<a href="https://github.com/espressif/esp-docs/blob/4ccc32f/docs/en/genindex" class="fa fa-github"> Edit on GitHub</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
|
||||
<h1 id="index">Index</h1>
|
||||
|
||||
<div class="genindex-jumpbox">
|
||||
<a href="#E"><strong>E</strong></a>
|
||||
|
||||
</div>
|
||||
<h2 id="E">E</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="index.html#_CPPv426esp_websocket_client_close29esp_websocket_client_handle_t10TickType_t">esp_websocket_client_close (C++ function)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv436esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t">esp_websocket_client_close_with_code (C++ function)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv429esp_websocket_client_config_t">esp_websocket_client_config_t (C++ struct)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t11buffer_sizeE">esp_websocket_client_config_t::buffer_size (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t8cert_lenE">esp_websocket_client_config_t::cert_len (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t8cert_pemE">esp_websocket_client_config_t::cert_pem (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t11client_certE">esp_websocket_client_config_t::client_cert (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t15client_cert_lenE">esp_websocket_client_config_t::client_cert_len (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t10client_keyE">esp_websocket_client_config_t::client_key (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t14client_key_lenE">esp_websocket_client_config_t::client_key_len (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t22disable_auto_reconnectE">esp_websocket_client_config_t::disable_auto_reconnect (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t23disable_pingpong_disconE">esp_websocket_client_config_t::disable_pingpong_discon (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t7headersE">esp_websocket_client_config_t::headers (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t4hostE">esp_websocket_client_config_t::host (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t7if_nameE">esp_websocket_client_config_t::if_name (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t16keep_alive_countE">esp_websocket_client_config_t::keep_alive_count (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t17keep_alive_enableE">esp_websocket_client_config_t::keep_alive_enable (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t15keep_alive_idleE">esp_websocket_client_config_t::keep_alive_idle (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t19keep_alive_intervalE">esp_websocket_client_config_t::keep_alive_interval (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t18network_timeout_msE">esp_websocket_client_config_t::network_timeout_ms (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t8passwordE">esp_websocket_client_config_t::password (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t4pathE">esp_websocket_client_config_t::path (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t17ping_interval_secE">esp_websocket_client_config_t::ping_interval_sec (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t20pingpong_timeout_secE">esp_websocket_client_config_t::pingpong_timeout_sec (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t4portE">esp_websocket_client_config_t::port (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t20reconnect_timeout_msE">esp_websocket_client_config_t::reconnect_timeout_ms (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t27skip_cert_common_name_checkE">esp_websocket_client_config_t::skip_cert_common_name_check (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t11subprotocolE">esp_websocket_client_config_t::subprotocol (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t9task_prioE">esp_websocket_client_config_t::task_prio (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t10task_stackE">esp_websocket_client_config_t::task_stack (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t9transportE">esp_websocket_client_config_t::transport (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t3uriE">esp_websocket_client_config_t::uri (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t19use_global_ca_storeE">esp_websocket_client_config_t::use_global_ca_store (C++ member)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t10user_agentE">esp_websocket_client_config_t::user_agent (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t12user_contextE">esp_websocket_client_config_t::user_context (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N29esp_websocket_client_config_t8usernameE">esp_websocket_client_config_t::username (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv428esp_websocket_client_destroy29esp_websocket_client_handle_t">esp_websocket_client_destroy (C++ function)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv429esp_websocket_client_handle_t">esp_websocket_client_handle_t (C++ type)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv425esp_websocket_client_initPK29esp_websocket_client_config_t">esp_websocket_client_init (C++ function)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv433esp_websocket_client_is_connected29esp_websocket_client_handle_t">esp_websocket_client_is_connected (C++ function)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv429esp_websocket_client_send_bin29esp_websocket_client_handle_tPKci10TickType_t">esp_websocket_client_send_bin (C++ function)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv430esp_websocket_client_send_text29esp_websocket_client_handle_tPKci10TickType_t">esp_websocket_client_send_text (C++ function)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv428esp_websocket_client_set_uri29esp_websocket_client_handle_tPKc">esp_websocket_client_set_uri (C++ function)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv426esp_websocket_client_start29esp_websocket_client_handle_t">esp_websocket_client_start (C++ function)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv425esp_websocket_client_stop29esp_websocket_client_handle_t">esp_websocket_client_stop (C++ function)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv426esp_websocket_event_data_t">esp_websocket_event_data_t (C++ struct)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N26esp_websocket_event_data_t6clientE">esp_websocket_event_data_t::client (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N26esp_websocket_event_data_t8data_lenE">esp_websocket_event_data_t::data_len (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N26esp_websocket_event_data_t8data_ptrE">esp_websocket_event_data_t::data_ptr (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N26esp_websocket_event_data_t7op_codeE">esp_websocket_event_data_t::op_code (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N26esp_websocket_event_data_t11payload_lenE">esp_websocket_event_data_t::payload_len (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N26esp_websocket_event_data_t14payload_offsetE">esp_websocket_event_data_t::payload_offset (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N26esp_websocket_event_data_t12user_contextE">esp_websocket_event_data_t::user_context (C++ member)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv424esp_websocket_event_id_t">esp_websocket_event_id_t (C++ enum)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N24esp_websocket_event_id_t19WEBSOCKET_EVENT_ANYE">esp_websocket_event_id_t::WEBSOCKET_EVENT_ANY (C++ enumerator)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N24esp_websocket_event_id_t22WEBSOCKET_EVENT_CLOSEDE">esp_websocket_event_id_t::WEBSOCKET_EVENT_CLOSED (C++ enumerator)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N24esp_websocket_event_id_t25WEBSOCKET_EVENT_CONNECTEDE">esp_websocket_event_id_t::WEBSOCKET_EVENT_CONNECTED (C++ enumerator)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N24esp_websocket_event_id_t20WEBSOCKET_EVENT_DATAE">esp_websocket_event_id_t::WEBSOCKET_EVENT_DATA (C++ enumerator)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N24esp_websocket_event_id_t28WEBSOCKET_EVENT_DISCONNECTEDE">esp_websocket_event_id_t::WEBSOCKET_EVENT_DISCONNECTED (C++ enumerator)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N24esp_websocket_event_id_t21WEBSOCKET_EVENT_ERRORE">esp_websocket_event_id_t::WEBSOCKET_EVENT_ERROR (C++ enumerator)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N24esp_websocket_event_id_t19WEBSOCKET_EVENT_MAXE">esp_websocket_event_id_t::WEBSOCKET_EVENT_MAX (C++ enumerator)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv429esp_websocket_register_events29esp_websocket_client_handle_t24esp_websocket_event_id_t19esp_event_handler_tPv">esp_websocket_register_events (C++ function)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv425esp_websocket_transport_t">esp_websocket_transport_t (C++ enum)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_SSLE">esp_websocket_transport_t::WEBSOCKET_TRANSPORT_OVER_SSL (C++ enumerator)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_TCPE">esp_websocket_transport_t::WEBSOCKET_TRANSPORT_OVER_TCP (C++ enumerator)</a>
|
||||
</li>
|
||||
<li><a href="index.html#_CPPv4N25esp_websocket_transport_t27WEBSOCKET_TRANSPORT_UNKNOWNE">esp_websocket_transport_t::WEBSOCKET_TRANSPORT_UNKNOWN (C++ enumerator)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
|
||||
© Copyright 2016 - 2022, Espressif Systems (Shanghai) Co., Ltd
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<ul class="footer">
|
||||
<li>
|
||||
|
||||
|
||||
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/espressif/sphinx_idf_theme">theme</a> based on <a href="https://github.com/readthedocs/sphinx_rtd_theme">Read the Docs Sphinx Theme</a>.
|
||||
</li>
|
||||
<li class="footer-aside">
|
||||
<a href="./esp-idf-en-master-esp32.pdf" class="fa fa-file-pdf-o"> Download PDF</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
975
esp_websocket_client/index.html
Normal file
975
esp_websocket_client/index.html
Normal file
@@ -0,0 +1,975 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>ESP WebSocket Client - ESP32 - — ESP-Protocols latest documentation</title>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||||
<script src="_static/jquery.js"></script>
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
<script src="_static/clipboard.min.js"></script>
|
||||
<script src="_static/copybutton.js"></script>
|
||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
DOCUMENTATION_OPTIONS.PAGENAME = 'index';
|
||||
DOCUMENTATION_OPTIONS.PROJECT_SLUG = 'esp-idf';
|
||||
DOCUMENTATION_OPTIONS.VERSIONS_URL = 'https://dl.espressif.com/dl/esp-idf/idf_versions.js';
|
||||
DOCUMENTATION_OPTIONS.LANGUAGES = ["en"];
|
||||
DOCUMENTATION_OPTIONS.IDF_TARGET = 'esp32';
|
||||
DOCUMENTATION_OPTIONS.HAS_IDF_TARGETS = ["esp32"]
|
||||
DOCUMENTATION_OPTIONS.RELEASE = 'latest';
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" src="https://dl.espressif.com/dl/esp-idf/idf_versions.js"></script>
|
||||
|
||||
|
||||
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/copybutton.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/theme_overrides.css" type="text/css" />
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="#" class="icon icon-home" alt="Documentation Home"> ESP-Protocols
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="_static/espressif-logo.svg" class="logo" alt="Logo"/>
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
<div class="selectors">
|
||||
<select id="target-select" style="width: 150px;" hidden>
|
||||
<option value="" disabled selected>Choose target...</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="selectors">
|
||||
<select id="version-select" style="width: 150px;" hidden>
|
||||
<option value="" disabled selected>Choose version...</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Local TOC -->
|
||||
<div class="local-toc"><ul>
|
||||
<li><a class="reference internal" href="#">ESP WebSocket Client</a><ul>
|
||||
<li><a class="reference internal" href="#overview">Overview</a></li>
|
||||
<li><a class="reference internal" href="#features">Features</a></li>
|
||||
<li><a class="reference internal" href="#configuration">Configuration</a><ul>
|
||||
<li><a class="reference internal" href="#uri">URI</a></li>
|
||||
<li><a class="reference internal" href="#tls">TLS</a></li>
|
||||
<li><a class="reference internal" href="#subprotocol">Subprotocol</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#events">Events</a></li>
|
||||
<li><a class="reference internal" href="#limitations-and-known-issues">Limitations and Known Issues</a></li>
|
||||
<li><a class="reference internal" href="#application-example">Application Example</a><ul>
|
||||
<li><a class="reference internal" href="#sending-text-data">Sending Text Data</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#api-reference">API Reference</a><ul>
|
||||
<li><a class="reference internal" href="#header-file">Header File</a></li>
|
||||
<li><a class="reference internal" href="#functions">Functions</a></li>
|
||||
<li><a class="reference internal" href="#structures">Structures</a></li>
|
||||
<li><a class="reference internal" href="#type-definitions">Type Definitions</a></li>
|
||||
<li><a class="reference internal" href="#enumerations">Enumerations</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="#">ESP-Protocols</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="#" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li>ESP WebSocket Client</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
|
||||
<a href="https://github.com/espressif/esp-docs/blob/4ccc32f/docs/en/index.rst" class="fa fa-github"> Edit on GitHub</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<section id="esp-websocket-client">
|
||||
<h1>ESP WebSocket Client<a class="headerlink" href="#esp-websocket-client" title="Permalink to this headline">¶</a></h1>
|
||||
<section id="overview">
|
||||
<h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2>
|
||||
<p>The ESP WebSocket client is an implementation of <a class="reference external" href="https://tools.ietf.org/html/rfc6455">WebSocket protocol client</a> for ESP32</p>
|
||||
</section>
|
||||
<section id="features">
|
||||
<h2>Features<a class="headerlink" href="#features" title="Permalink to this headline">¶</a></h2>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><p>Supports WebSocket over TCP, TLS with mbedtls</p></li>
|
||||
<li><p>Easy to setup with URI</p></li>
|
||||
<li><p>Multiple instances (Multiple clients in one application)</p></li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
</section>
|
||||
<section id="configuration">
|
||||
<h2>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline">¶</a></h2>
|
||||
<section id="uri">
|
||||
<h3>URI<a class="headerlink" href="#uri" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Supports <code class="docutils literal notranslate"><span class="pre">ws</span></code>, <code class="docutils literal notranslate"><span class="pre">wss</span></code> schemes</p></li>
|
||||
<li><p>WebSocket samples:</p>
|
||||
<ul>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">ws://echo.websocket.org</span></code>: WebSocket over TCP, default port 80</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">wss://echo.websocket.org</span></code>: WebSocket over SSL, default port 443</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Minimal configurations:</p>
|
||||
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">const</span> <span class="n">esp_websocket_client_config_t</span> <span class="n">ws_cfg</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="p">.</span><span class="n">uri</span> <span class="o">=</span> <span class="s">"ws://echo.websocket.org"</span><span class="p">,</span>
|
||||
<span class="p">};</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The WebSocket client supports the use of both path and query in the URI. Sample:</p>
|
||||
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">const</span> <span class="n">esp_websocket_client_config_t</span> <span class="n">ws_cfg</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="p">.</span><span class="n">uri</span> <span class="o">=</span> <span class="s">"ws://echo.websocket.org/connectionhandler?id=104"</span><span class="p">,</span>
|
||||
<span class="p">};</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>If there are any options related to the URI in
|
||||
<a class="reference internal" href="#_CPPv429esp_websocket_client_config_t" title="esp_websocket_client_config_t"><code class="xref cpp cpp-type docutils literal notranslate"><span class="pre">esp_websocket_client_config_t</span></code></a>, the option defined by the URI will be
|
||||
overridden. Sample:</p>
|
||||
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">const</span> <span class="n">esp_websocket_client_config_t</span> <span class="n">ws_cfg</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="p">.</span><span class="n">uri</span> <span class="o">=</span> <span class="s">"ws://echo.websocket.org:123"</span><span class="p">,</span>
|
||||
<span class="p">.</span><span class="n">port</span> <span class="o">=</span> <span class="mi">4567</span><span class="p">,</span>
|
||||
<span class="p">};</span>
|
||||
<span class="c1">//WebSocket client will connect to websocket.org using port 4567</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="tls">
|
||||
<h3>TLS<a class="headerlink" href="#tls" title="Permalink to this headline">¶</a></h3>
|
||||
<p>Configuration:</p>
|
||||
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">const</span> <span class="n">esp_websocket_client_config_t</span> <span class="n">ws_cfg</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="p">.</span><span class="n">uri</span> <span class="o">=</span> <span class="s">"wss://echo.websocket.org"</span><span class="p">,</span>
|
||||
<span class="p">.</span><span class="n">cert_pem</span> <span class="o">=</span> <span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n">websocket_org_pem_start</span><span class="p">,</span>
|
||||
<span class="p">};</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>If you want to verify the server, then you need to provide a certificate in PEM format, and provide to <code class="docutils literal notranslate"><span class="pre">cert_pem</span></code> in <code class="xref cpp cpp-type docutils literal notranslate"><span class="pre">websocket_client_config_t</span></code>. If no certficate is provided then the TLS connection will default to not requiring verification.</p>
|
||||
</aside>
|
||||
<p>PEM certificate for this example could be extracted from an openssl <cite>s_client</cite> command connecting to websocket.org.
|
||||
In case a host operating system has <cite>openssl</cite> and <cite>sed</cite> packages installed, one could execute the following command to download and save the root or intermediate root certificate to a file (Note for Windows users: Both Linux like environment or Windows native packages may be used).
|
||||
<code class="docutils literal notranslate"><span class="pre">`</span>
|
||||
<span class="pre">echo</span> <span class="pre">""</span> <span class="pre">|</span> <span class="pre">openssl</span> <span class="pre">s_client</span> <span class="pre">-showcerts</span> <span class="pre">-connect</span> <span class="pre">websocket.org:443</span> <span class="pre">|</span> <span class="pre">sed</span> <span class="pre">-n</span> <span class="pre">"1,/Root/d;</span> <span class="pre">/BEGIN/,/END/p"</span> <span class="pre">|</span> <span class="pre">openssl</span> <span class="pre">x509</span> <span class="pre">-outform</span> <span class="pre">PEM</span> <span class="pre">>websocket_org.pem</span>
|
||||
<span class="pre">`</span></code></p>
|
||||
<p>This command will extract the second certificate in the chain and save it as a pem-file.</p>
|
||||
</section>
|
||||
<section id="subprotocol">
|
||||
<h3>Subprotocol<a class="headerlink" href="#subprotocol" title="Permalink to this headline">¶</a></h3>
|
||||
<p>The subprotocol field in the config struct can be used to request a subprotocol</p>
|
||||
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">const</span> <span class="n">esp_websocket_client_config_t</span> <span class="n">ws_cfg</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="p">.</span><span class="n">uri</span> <span class="o">=</span> <span class="s">"ws://websocket.org"</span><span class="p">,</span>
|
||||
<span class="p">.</span><span class="n">subprotocol</span> <span class="o">=</span> <span class="s">"soap"</span><span class="p">,</span>
|
||||
<span class="p">};</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>The client is indifferent to the subprotocol field in the server response and will accept the connection no matter what the server replies.</p>
|
||||
</aside>
|
||||
<p>For more options on <a class="reference internal" href="#_CPPv429esp_websocket_client_config_t" title="esp_websocket_client_config_t"><code class="xref cpp cpp-type docutils literal notranslate"><span class="pre">esp_websocket_client_config_t</span></code></a>, please refer to API reference below</p>
|
||||
</section>
|
||||
</section>
|
||||
<section id="events">
|
||||
<h2>Events<a class="headerlink" href="#events" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p><cite>WEBSOCKET_EVENT_CONNECTED</cite>: The client has successfully established a connection to the server. The client is now ready to send and receive data. Contains no event data.</p></li>
|
||||
<li><p><cite>WEBSOCKET_EVENT_DISCONNECTED</cite>: The client has aborted the connection due to the transport layer failing to read data, e.g. because the server is unavailable. Contains no event data.</p></li>
|
||||
<li><p><cite>WEBSOCKET_EVENT_DATA</cite>: The client has successfully received and parsed a WebSocket frame. The event data contains a pointer to the payload data, the length of the payload data as well as the opcode of the received frame. A message may be fragmented into multiple events if the length exceeds the buffer size. This event will also be posted for non-payload frames, e.g. pong or connection close frames.</p></li>
|
||||
<li><p><cite>WEBSOCKET_EVENT_ERROR</cite>: Not used in the current implementation of the client.</p></li>
|
||||
</ul>
|
||||
<p>If the client handle is needed in the event handler it can be accessed through the pointer passed to the event handler:</p>
|
||||
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="n">esp_websocket_client_handle_t</span> <span class="n">client</span> <span class="o">=</span> <span class="p">(</span><span class="n">esp_websocket_client_handle_t</span><span class="p">)</span><span class="n">handler_args</span><span class="p">;</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="limitations-and-known-issues">
|
||||
<h2>Limitations and Known Issues<a class="headerlink" href="#limitations-and-known-issues" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>The client is able to request the use of a subprotocol from the server during the handshake, but does not do any subprotocol related checks on the response from the server.</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="application-example">
|
||||
<h2>Application Example<a class="headerlink" href="#application-example" title="Permalink to this headline">¶</a></h2>
|
||||
<p>A simple WebSocket example that uses esp_websocket_client to establish a websocket connection and send/receive data with the <a class="reference external" href="https://websocket.org">websocket.org</a> server can be found here: <a class="reference external" href="https://github.com/espressif/esp-protocols/tree/4ccc32f/examples/../examples">example </a>.</p>
|
||||
<section id="sending-text-data">
|
||||
<h3>Sending Text Data<a class="headerlink" href="#sending-text-data" title="Permalink to this headline">¶</a></h3>
|
||||
<p>The WebSocket client supports sending data as a text data frame, which informs the application layer that the payload data is text data encoded as UTF-8. Example:</p>
|
||||
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="n">esp_websocket_client_send_text</span><span class="p">(</span><span class="n">client</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">len</span><span class="p">,</span> <span class="n">portMAX_DELAY</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="api-reference">
|
||||
<h2>API Reference<a class="headerlink" href="#api-reference" title="Permalink to this headline">¶</a></h2>
|
||||
<section id="header-file">
|
||||
<h3>Header File<a class="headerlink" href="#header-file" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/espressif/esp-protocols/blob/4ccc32f/include/esp_websocket_client.h">include/esp_websocket_client.h</a></p></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="functions">
|
||||
<h3>Functions<a class="headerlink" href="#functions" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="cpp function">
|
||||
<dt class="sig sig-object cpp" id="_CPPv425esp_websocket_client_initPK29esp_websocket_client_config_t">
|
||||
<span id="_CPPv325esp_websocket_client_initPK29esp_websocket_client_config_t"></span><span id="_CPPv225esp_websocket_client_initPK29esp_websocket_client_config_t"></span><span id="esp_websocket_client_init__esp_websocket_client_config_tCP"></span><span class="target" id="esp__websocket__client_8h_1a243bea9ad290aa71efa02d7fff90d15d"></span><a class="reference internal" href="#_CPPv429esp_websocket_client_handle_t" title="esp_websocket_client_handle_t"><span class="n"><span class="pre">esp_websocket_client_handle_t</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">esp_websocket_client_init</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv429esp_websocket_client_config_t" title="esp_websocket_client_config_t"><span class="n"><span class="pre">esp_websocket_client_config_t</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">config</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv425esp_websocket_client_initPK29esp_websocket_client_config_t" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Start a Websocket session This function must be the first function to call, and it returns a esp_websocket_client_handle_t that you must use as input to other functions in the interface. This call MUST have a corresponding call to esp_websocket_client_destroy when the operation is complete. </p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||
<dd class="field-odd"><p><strong>config</strong> – <strong>[in]</strong> The configuration</p>
|
||||
</dd>
|
||||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||
<dd class="field-even"><p><ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">esp_websocket_client_handle_t</span></code></p></li>
|
||||
<li><p>NULL if any errors </p></li>
|
||||
</ul>
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp function">
|
||||
<dt class="sig sig-object cpp" id="_CPPv428esp_websocket_client_set_uri29esp_websocket_client_handle_tPKc">
|
||||
<span id="_CPPv328esp_websocket_client_set_uri29esp_websocket_client_handle_tPKc"></span><span id="_CPPv228esp_websocket_client_set_uri29esp_websocket_client_handle_tPKc"></span><span id="esp_websocket_client_set_uri__esp_websocket_client_handle_t.cCP"></span><span class="target" id="esp__websocket__client_8h_1a50474c5aa08888672eb7c325ee5b0ac2"></span><span class="n"><span class="pre">esp_err_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">esp_websocket_client_set_uri</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv429esp_websocket_client_handle_t" title="esp_websocket_client_handle_t"><span class="n"><span class="pre">esp_websocket_client_handle_t</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">client</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uri</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv428esp_websocket_client_set_uri29esp_websocket_client_handle_tPKc" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Set URL for client, when performing this behavior, the options in the URL will replace the old ones Must stop the WebSocket client before set URI if the client has been connected. </p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>client</strong> – <strong>[in]</strong> The client </p></li>
|
||||
<li><p><strong>uri</strong> – <strong>[in]</strong> The uri</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||
<dd class="field-even"><p>esp_err_t </p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp function">
|
||||
<dt class="sig sig-object cpp" id="_CPPv426esp_websocket_client_start29esp_websocket_client_handle_t">
|
||||
<span id="_CPPv326esp_websocket_client_start29esp_websocket_client_handle_t"></span><span id="_CPPv226esp_websocket_client_start29esp_websocket_client_handle_t"></span><span id="esp_websocket_client_start__esp_websocket_client_handle_t"></span><span class="target" id="esp__websocket__client_8h_1a693a8aef5e81de4c26db82e398788d71"></span><span class="n"><span class="pre">esp_err_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">esp_websocket_client_start</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv429esp_websocket_client_handle_t" title="esp_websocket_client_handle_t"><span class="n"><span class="pre">esp_websocket_client_handle_t</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">client</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv426esp_websocket_client_start29esp_websocket_client_handle_t" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Open the WebSocket connection. </p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||
<dd class="field-odd"><p><strong>client</strong> – <strong>[in]</strong> The client</p>
|
||||
</dd>
|
||||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||
<dd class="field-even"><p>esp_err_t </p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp function">
|
||||
<dt class="sig sig-object cpp" id="_CPPv425esp_websocket_client_stop29esp_websocket_client_handle_t">
|
||||
<span id="_CPPv325esp_websocket_client_stop29esp_websocket_client_handle_t"></span><span id="_CPPv225esp_websocket_client_stop29esp_websocket_client_handle_t"></span><span id="esp_websocket_client_stop__esp_websocket_client_handle_t"></span><span class="target" id="esp__websocket__client_8h_1a81a30e1ac0431cd4c93b78f58f7511df"></span><span class="n"><span class="pre">esp_err_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">esp_websocket_client_stop</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv429esp_websocket_client_handle_t" title="esp_websocket_client_handle_t"><span class="n"><span class="pre">esp_websocket_client_handle_t</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">client</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv425esp_websocket_client_stop29esp_websocket_client_handle_t" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Stops the WebSocket connection without websocket closing handshake. </p>
|
||||
<p>This API stops ws client and closes TCP connection directly without sending close frames. It is a good practice to close the connection in a clean way using esp_websocket_client_close().</p>
|
||||
<p>Notes:<ul class="simple">
|
||||
<li><p>Cannot be called from the websocket event handler</p></li>
|
||||
</ul>
|
||||
</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||
<dd class="field-odd"><p><strong>client</strong> – <strong>[in]</strong> The client</p>
|
||||
</dd>
|
||||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||
<dd class="field-even"><p>esp_err_t </p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp function">
|
||||
<dt class="sig sig-object cpp" id="_CPPv428esp_websocket_client_destroy29esp_websocket_client_handle_t">
|
||||
<span id="_CPPv328esp_websocket_client_destroy29esp_websocket_client_handle_t"></span><span id="_CPPv228esp_websocket_client_destroy29esp_websocket_client_handle_t"></span><span id="esp_websocket_client_destroy__esp_websocket_client_handle_t"></span><span class="target" id="esp__websocket__client_8h_1a23060c864a083defeb1e5c549c07e7f4"></span><span class="n"><span class="pre">esp_err_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">esp_websocket_client_destroy</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv429esp_websocket_client_handle_t" title="esp_websocket_client_handle_t"><span class="n"><span class="pre">esp_websocket_client_handle_t</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">client</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv428esp_websocket_client_destroy29esp_websocket_client_handle_t" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Destroy the WebSocket connection and free all resources. This function must be the last function to call for an session. It is the opposite of the esp_websocket_client_init function and must be called with the same handle as input that a esp_websocket_client_init call returned. This might close all connections this handle has used. </p>
|
||||
<p>Notes:<ul class="simple">
|
||||
<li><p>Cannot be called from the websocket event handler</p></li>
|
||||
</ul>
|
||||
</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||
<dd class="field-odd"><p><strong>client</strong> – <strong>[in]</strong> The client</p>
|
||||
</dd>
|
||||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||
<dd class="field-even"><p>esp_err_t </p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp function">
|
||||
<dt class="sig sig-object cpp" id="_CPPv429esp_websocket_client_send_bin29esp_websocket_client_handle_tPKci10TickType_t">
|
||||
<span id="_CPPv329esp_websocket_client_send_bin29esp_websocket_client_handle_tPKci10TickType_t"></span><span id="_CPPv229esp_websocket_client_send_bin29esp_websocket_client_handle_tPKci10TickType_t"></span><span id="esp_websocket_client_send_bin__esp_websocket_client_handle_t.cCP.i.TickType_t"></span><span class="target" id="esp__websocket__client_8h_1a7c0f6ba95ed2c5a79aaffdd98c755052"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">esp_websocket_client_send_bin</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv429esp_websocket_client_handle_t" title="esp_websocket_client_handle_t"><span class="n"><span class="pre">esp_websocket_client_handle_t</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">client</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">len</span></span>, <span class="n"><span class="pre">TickType_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">timeout</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv429esp_websocket_client_send_bin29esp_websocket_client_handle_tPKci10TickType_t" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Write binary data to the WebSocket connection (data send with WS OPCODE=02, i.e. binary) </p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>client</strong> – <strong>[in]</strong> The client </p></li>
|
||||
<li><p><strong>data</strong> – <strong>[in]</strong> The data </p></li>
|
||||
<li><p><strong>len</strong> – <strong>[in]</strong> The length </p></li>
|
||||
<li><p><strong>timeout</strong> – <strong>[in]</strong> Write data timeout in RTOS ticks</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||
<dd class="field-even"><p><ul class="simple">
|
||||
<li><p>Number of data was sent</p></li>
|
||||
<li><p>(-1) if any errors </p></li>
|
||||
</ul>
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp function">
|
||||
<dt class="sig sig-object cpp" id="_CPPv430esp_websocket_client_send_text29esp_websocket_client_handle_tPKci10TickType_t">
|
||||
<span id="_CPPv330esp_websocket_client_send_text29esp_websocket_client_handle_tPKci10TickType_t"></span><span id="_CPPv230esp_websocket_client_send_text29esp_websocket_client_handle_tPKci10TickType_t"></span><span id="esp_websocket_client_send_text__esp_websocket_client_handle_t.cCP.i.TickType_t"></span><span class="target" id="esp__websocket__client_8h_1a68629bdee47e1232c5565e4bfb25e4fe"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">esp_websocket_client_send_text</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv429esp_websocket_client_handle_t" title="esp_websocket_client_handle_t"><span class="n"><span class="pre">esp_websocket_client_handle_t</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">client</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">len</span></span>, <span class="n"><span class="pre">TickType_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">timeout</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv430esp_websocket_client_send_text29esp_websocket_client_handle_tPKci10TickType_t" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Write textual data to the WebSocket connection (data send with WS OPCODE=01, i.e. text) </p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>client</strong> – <strong>[in]</strong> The client </p></li>
|
||||
<li><p><strong>data</strong> – <strong>[in]</strong> The data </p></li>
|
||||
<li><p><strong>len</strong> – <strong>[in]</strong> The length </p></li>
|
||||
<li><p><strong>timeout</strong> – <strong>[in]</strong> Write data timeout in RTOS ticks</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||
<dd class="field-even"><p><ul class="simple">
|
||||
<li><p>Number of data was sent</p></li>
|
||||
<li><p>(-1) if any errors </p></li>
|
||||
</ul>
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp function">
|
||||
<dt class="sig sig-object cpp" id="_CPPv426esp_websocket_client_close29esp_websocket_client_handle_t10TickType_t">
|
||||
<span id="_CPPv326esp_websocket_client_close29esp_websocket_client_handle_t10TickType_t"></span><span id="_CPPv226esp_websocket_client_close29esp_websocket_client_handle_t10TickType_t"></span><span id="esp_websocket_client_close__esp_websocket_client_handle_t.TickType_t"></span><span class="target" id="esp__websocket__client_8h_1a67f37da59a8da2f5a8fcad77d64924e3"></span><span class="n"><span class="pre">esp_err_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">esp_websocket_client_close</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv429esp_websocket_client_handle_t" title="esp_websocket_client_handle_t"><span class="n"><span class="pre">esp_websocket_client_handle_t</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">client</span></span>, <span class="n"><span class="pre">TickType_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">timeout</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv426esp_websocket_client_close29esp_websocket_client_handle_t10TickType_t" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Close the WebSocket connection in a clean way. </p>
|
||||
<p>Sequence of clean close initiated by client:<ul>
|
||||
<li><p>Client sends CLOSE frame</p></li>
|
||||
<li><p>Client waits until server echos the CLOSE frame</p></li>
|
||||
<li><p>Client waits until server closes the connection</p></li>
|
||||
<li><p>Client is stopped the same way as by the <code class="docutils literal notranslate"><span class="pre">esp_websocket_client_stop()</span></code></p>
|
||||
<p>Notes:<ul class="simple">
|
||||
<li><p>Cannot be called from the websocket event handler</p></li>
|
||||
</ul>
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>client</strong> – <strong>[in]</strong> The client </p></li>
|
||||
<li><p><strong>timeout</strong> – <strong>[in]</strong> Timeout in RTOS ticks for waiting</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||
<dd class="field-even"><p>esp_err_t </p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp function">
|
||||
<dt class="sig sig-object cpp" id="_CPPv436esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t">
|
||||
<span id="_CPPv336esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t"></span><span id="_CPPv236esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t"></span><span id="esp_websocket_client_close_with_code__esp_websocket_client_handle_t.i.cCP.i.TickType_t"></span><span class="target" id="esp__websocket__client_8h_1ae98061696a262126c14c4f4e2d6abfaf"></span><span class="n"><span class="pre">esp_err_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">esp_websocket_client_close_with_code</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv429esp_websocket_client_handle_t" title="esp_websocket_client_handle_t"><span class="n"><span class="pre">esp_websocket_client_handle_t</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">client</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">code</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">len</span></span>, <span class="n"><span class="pre">TickType_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">timeout</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv436esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Close the WebSocket connection in a clean way with custom code/data Closing sequence is the same as for esp_websocket_client_close() </p>
|
||||
<p>Notes:<ul class="simple">
|
||||
<li><p>Cannot be called from the websocket event handler</p></li>
|
||||
</ul>
|
||||
</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>client</strong> – <strong>[in]</strong> The client </p></li>
|
||||
<li><p><strong>code</strong> – <strong>[in]</strong> Close status code as defined in RFC6455 section-7.4 </p></li>
|
||||
<li><p><strong>data</strong> – <strong>[in]</strong> Additional data to closing message </p></li>
|
||||
<li><p><strong>len</strong> – <strong>[in]</strong> The length of the additional data </p></li>
|
||||
<li><p><strong>timeout</strong> – <strong>[in]</strong> Timeout in RTOS ticks for waiting</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||
<dd class="field-even"><p>esp_err_t </p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp function">
|
||||
<dt class="sig sig-object cpp" id="_CPPv433esp_websocket_client_is_connected29esp_websocket_client_handle_t">
|
||||
<span id="_CPPv333esp_websocket_client_is_connected29esp_websocket_client_handle_t"></span><span id="_CPPv233esp_websocket_client_is_connected29esp_websocket_client_handle_t"></span><span id="esp_websocket_client_is_connected__esp_websocket_client_handle_t"></span><span class="target" id="esp__websocket__client_8h_1ab669d31f755182eac55975558ce499c1"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">esp_websocket_client_is_connected</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv429esp_websocket_client_handle_t" title="esp_websocket_client_handle_t"><span class="n"><span class="pre">esp_websocket_client_handle_t</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">client</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv433esp_websocket_client_is_connected29esp_websocket_client_handle_t" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Check the WebSocket client connection state. </p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||
<dd class="field-odd"><p><strong>client</strong> – <strong>[in]</strong> The client handle</p>
|
||||
</dd>
|
||||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||
<dd class="field-even"><p><ul class="simple">
|
||||
<li><p>true</p></li>
|
||||
<li><p>false </p></li>
|
||||
</ul>
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp function">
|
||||
<dt class="sig sig-object cpp" id="_CPPv429esp_websocket_register_events29esp_websocket_client_handle_t24esp_websocket_event_id_t19esp_event_handler_tPv">
|
||||
<span id="_CPPv329esp_websocket_register_events29esp_websocket_client_handle_t24esp_websocket_event_id_t19esp_event_handler_tPv"></span><span id="_CPPv229esp_websocket_register_events29esp_websocket_client_handle_t24esp_websocket_event_id_t19esp_event_handler_tPv"></span><span id="esp_websocket_register_events__esp_websocket_client_handle_t.esp_websocket_event_id_t.esp_event_handler_t.voidP"></span><span class="target" id="esp__websocket__client_8h_1a8d993808cd78275be7ae4de44e8c11d9"></span><span class="n"><span class="pre">esp_err_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">esp_websocket_register_events</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv429esp_websocket_client_handle_t" title="esp_websocket_client_handle_t"><span class="n"><span class="pre">esp_websocket_client_handle_t</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">client</span></span>, <a class="reference internal" href="#_CPPv424esp_websocket_event_id_t" title="esp_websocket_event_id_t"><span class="n"><span class="pre">esp_websocket_event_id_t</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">event</span></span>, <span class="n"><span class="pre">esp_event_handler_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">event_handler</span></span>, <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">event_handler_arg</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv429esp_websocket_register_events29esp_websocket_client_handle_t24esp_websocket_event_id_t19esp_event_handler_tPv" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Register the Websocket Events. </p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>client</strong> – The client handle </p></li>
|
||||
<li><p><strong>event</strong> – The event id </p></li>
|
||||
<li><p><strong>event_handler</strong> – The callback function </p></li>
|
||||
<li><p><strong>event_handler_arg</strong> – User context </p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||||
<dd class="field-even"><p>esp_err_t </p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
</section>
|
||||
<section id="structures">
|
||||
<h3>Structures<a class="headerlink" href="#structures" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="cpp struct">
|
||||
<dt class="sig sig-object cpp" id="_CPPv426esp_websocket_event_data_t">
|
||||
<span id="_CPPv326esp_websocket_event_data_t"></span><span id="_CPPv226esp_websocket_event_data_t"></span><span id="esp_websocket_event_data_t"></span><span class="target" id="structesp__websocket__event__data__t"></span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">esp_websocket_event_data_t</span></span></span><a class="headerlink" href="#_CPPv426esp_websocket_event_data_t" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Websocket event data. </p>
|
||||
<div class="breathe-sectiondef docutils container">
|
||||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N26esp_websocket_event_data_t8data_ptrE">
|
||||
<span id="_CPPv3N26esp_websocket_event_data_t8data_ptrE"></span><span id="_CPPv2N26esp_websocket_event_data_t8data_ptrE"></span><span id="esp_websocket_event_data_t::data_ptr__cCP"></span><span class="target" id="structesp__websocket__event__data__t_1affe2518fe3abc0cd5e791b58e4429759"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">data_ptr</span></span></span><a class="headerlink" href="#_CPPv4N26esp_websocket_event_data_t8data_ptrE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Data pointer </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N26esp_websocket_event_data_t8data_lenE">
|
||||
<span id="_CPPv3N26esp_websocket_event_data_t8data_lenE"></span><span id="_CPPv2N26esp_websocket_event_data_t8data_lenE"></span><span id="esp_websocket_event_data_t::data_len__i"></span><span class="target" id="structesp__websocket__event__data__t_1a92d78bddde51e93a0b73c3707603fc8d"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">data_len</span></span></span><a class="headerlink" href="#_CPPv4N26esp_websocket_event_data_t8data_lenE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Data length </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N26esp_websocket_event_data_t7op_codeE">
|
||||
<span id="_CPPv3N26esp_websocket_event_data_t7op_codeE"></span><span id="_CPPv2N26esp_websocket_event_data_t7op_codeE"></span><span id="esp_websocket_event_data_t::op_code__uint8_t"></span><span class="target" id="structesp__websocket__event__data__t_1aeba7476e8b18de266426a6d345fa530c"></span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">op_code</span></span></span><a class="headerlink" href="#_CPPv4N26esp_websocket_event_data_t7op_codeE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Received opcode </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N26esp_websocket_event_data_t6clientE">
|
||||
<span id="_CPPv3N26esp_websocket_event_data_t6clientE"></span><span id="_CPPv2N26esp_websocket_event_data_t6clientE"></span><span id="esp_websocket_event_data_t::client__esp_websocket_client_handle_t"></span><span class="target" id="structesp__websocket__event__data__t_1a39accb4406300e6e2033148d69700484"></span><a class="reference internal" href="#_CPPv429esp_websocket_client_handle_t" title="esp_websocket_client_handle_t"><span class="n"><span class="pre">esp_websocket_client_handle_t</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">client</span></span></span><a class="headerlink" href="#_CPPv4N26esp_websocket_event_data_t6clientE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>esp_websocket_client_handle_t context </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N26esp_websocket_event_data_t12user_contextE">
|
||||
<span id="_CPPv3N26esp_websocket_event_data_t12user_contextE"></span><span id="_CPPv2N26esp_websocket_event_data_t12user_contextE"></span><span id="esp_websocket_event_data_t::user_context__voidP"></span><span class="target" id="structesp__websocket__event__data__t_1afb7e9bc8b0820f1930c01bc533956185"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">user_context</span></span></span><a class="headerlink" href="#_CPPv4N26esp_websocket_event_data_t12user_contextE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>user_data context, from <a class="reference internal" href="#structesp__websocket__client__config__t"><span class="std std-ref">esp_websocket_client_config_t</span></a> user_data </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N26esp_websocket_event_data_t11payload_lenE">
|
||||
<span id="_CPPv3N26esp_websocket_event_data_t11payload_lenE"></span><span id="_CPPv2N26esp_websocket_event_data_t11payload_lenE"></span><span id="esp_websocket_event_data_t::payload_len__i"></span><span class="target" id="structesp__websocket__event__data__t_1a650c6104bb2be5656063a6a280c275bc"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">payload_len</span></span></span><a class="headerlink" href="#_CPPv4N26esp_websocket_event_data_t11payload_lenE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Total payload length, payloads exceeding buffer will be posted through multiple events </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N26esp_websocket_event_data_t14payload_offsetE">
|
||||
<span id="_CPPv3N26esp_websocket_event_data_t14payload_offsetE"></span><span id="_CPPv2N26esp_websocket_event_data_t14payload_offsetE"></span><span id="esp_websocket_event_data_t::payload_offset__i"></span><span class="target" id="structesp__websocket__event__data__t_1ad389aa8cd73d447415dc66322dc17cdc"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">payload_offset</span></span></span><a class="headerlink" href="#_CPPv4N26esp_websocket_event_data_t14payload_offsetE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Actual offset for the data associated with this event </p>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp struct">
|
||||
<dt class="sig sig-object cpp" id="_CPPv429esp_websocket_client_config_t">
|
||||
<span id="_CPPv329esp_websocket_client_config_t"></span><span id="_CPPv229esp_websocket_client_config_t"></span><span id="esp_websocket_client_config_t"></span><span class="target" id="structesp__websocket__client__config__t"></span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">esp_websocket_client_config_t</span></span></span><a class="headerlink" href="#_CPPv429esp_websocket_client_config_t" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Websocket client setup configuration. </p>
|
||||
<div class="breathe-sectiondef docutils container">
|
||||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t3uriE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t3uriE"></span><span id="_CPPv2N29esp_websocket_client_config_t3uriE"></span><span id="esp_websocket_client_config_t::uri__cCP"></span><span class="target" id="structesp__websocket__client__config__t_1a68a4aa23ee268e4ada68a48faeae818c"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">uri</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t3uriE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Websocket URI, the information on the URI can be overrides the other fields below, if any </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t4hostE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t4hostE"></span><span id="_CPPv2N29esp_websocket_client_config_t4hostE"></span><span id="esp_websocket_client_config_t::host__cCP"></span><span class="target" id="structesp__websocket__client__config__t_1a2cce5ac95180a538cf1aa3e859d6efce"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">host</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t4hostE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Domain or IP as string </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t4portE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t4portE"></span><span id="_CPPv2N29esp_websocket_client_config_t4portE"></span><span id="esp_websocket_client_config_t::port__i"></span><span class="target" id="structesp__websocket__client__config__t_1a581c889096c480cc18d827025e1248b2"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">port</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t4portE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Port to connect, default depend on esp_websocket_transport_t (80 or 443) </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t8usernameE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t8usernameE"></span><span id="_CPPv2N29esp_websocket_client_config_t8usernameE"></span><span id="esp_websocket_client_config_t::username__cCP"></span><span class="target" id="structesp__websocket__client__config__t_1a2b37727b2a79ffe0e4c7c3704ed2ef4e"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">username</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t8usernameE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Using for Http authentication - Not supported for now </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t8passwordE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t8passwordE"></span><span id="_CPPv2N29esp_websocket_client_config_t8passwordE"></span><span id="esp_websocket_client_config_t::password__cCP"></span><span class="target" id="structesp__websocket__client__config__t_1abf0bc7dc56c85becbeda0445cc29cfd7"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">password</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t8passwordE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Using for Http authentication - Not supported for now </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t4pathE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t4pathE"></span><span id="_CPPv2N29esp_websocket_client_config_t4pathE"></span><span id="esp_websocket_client_config_t::path__cCP"></span><span class="target" id="structesp__websocket__client__config__t_1a5f884f588890015196464cafb312a5fd"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">path</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t4pathE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>HTTP Path, if not set, default is <code class="docutils literal notranslate"><span class="pre">/</span></code> </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t22disable_auto_reconnectE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t22disable_auto_reconnectE"></span><span id="_CPPv2N29esp_websocket_client_config_t22disable_auto_reconnectE"></span><span id="esp_websocket_client_config_t::disable_auto_reconnect__b"></span><span class="target" id="structesp__websocket__client__config__t_1a3363f6a6cfb1bfb21b5d2d6ac67979c2"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">disable_auto_reconnect</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t22disable_auto_reconnectE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Disable the automatic reconnect function when disconnected </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t12user_contextE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t12user_contextE"></span><span id="_CPPv2N29esp_websocket_client_config_t12user_contextE"></span><span id="esp_websocket_client_config_t::user_context__voidP"></span><span class="target" id="structesp__websocket__client__config__t_1a2c567522b23235eec225a3a41c55b27d"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">user_context</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t12user_contextE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>HTTP user data context </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t9task_prioE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t9task_prioE"></span><span id="_CPPv2N29esp_websocket_client_config_t9task_prioE"></span><span id="esp_websocket_client_config_t::task_prio__i"></span><span class="target" id="structesp__websocket__client__config__t_1a1aaadb1006a78077d8e4e1641fcfdebb"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">task_prio</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t9task_prioE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Websocket task priority </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t10task_stackE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t10task_stackE"></span><span id="_CPPv2N29esp_websocket_client_config_t10task_stackE"></span><span id="esp_websocket_client_config_t::task_stack__i"></span><span class="target" id="structesp__websocket__client__config__t_1aaa2eb851ef9ad2f21057c0548df14aa4"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">task_stack</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t10task_stackE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Websocket task stack </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t11buffer_sizeE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t11buffer_sizeE"></span><span id="_CPPv2N29esp_websocket_client_config_t11buffer_sizeE"></span><span id="esp_websocket_client_config_t::buffer_size__i"></span><span class="target" id="structesp__websocket__client__config__t_1a316b4f48ec9a46c49a59df08149cca80"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buffer_size</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t11buffer_sizeE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Websocket buffer size </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t8cert_pemE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t8cert_pemE"></span><span id="_CPPv2N29esp_websocket_client_config_t8cert_pemE"></span><span id="esp_websocket_client_config_t::cert_pem__cCP"></span><span class="target" id="structesp__websocket__client__config__t_1a1cb1d87bf1b412d25952f4f6ae7c4294"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">cert_pem</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t8cert_pemE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Pointer to certificate data in PEM or DER format for server verify (with SSL), default is NULL, not required to verify the server. PEM-format must have a terminating NULL-character. DER-format requires the length to be passed in cert_len. </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t8cert_lenE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t8cert_lenE"></span><span id="_CPPv2N29esp_websocket_client_config_t8cert_lenE"></span><span id="esp_websocket_client_config_t::cert_len__s"></span><span class="target" id="structesp__websocket__client__config__t_1a14bb0dfadac26b7d3c18ab0918fada8c"></span><span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">cert_len</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t8cert_lenE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Length of the buffer pointed to by cert_pem. May be 0 for null-terminated pem </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t11client_certE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t11client_certE"></span><span id="_CPPv2N29esp_websocket_client_config_t11client_certE"></span><span id="esp_websocket_client_config_t::client_cert__cCP"></span><span class="target" id="structesp__websocket__client__config__t_1a68f0c9265aa02e226876932831003803"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">client_cert</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t11client_certE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Pointer to certificate data in PEM or DER format for SSL mutual authentication, default is NULL, not required if mutual authentication is not needed. If it is not NULL, also <code class="docutils literal notranslate"><span class="pre">client_key</span></code> has to be provided. PEM-format must have a terminating NULL-character. DER-format requires the length to be passed in client_cert_len. </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t15client_cert_lenE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t15client_cert_lenE"></span><span id="_CPPv2N29esp_websocket_client_config_t15client_cert_lenE"></span><span id="esp_websocket_client_config_t::client_cert_len__s"></span><span class="target" id="structesp__websocket__client__config__t_1a0d0f85fb986afc30c497c458d7f88e84"></span><span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">client_cert_len</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t15client_cert_lenE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Length of the buffer pointed to by client_cert. May be 0 for null-terminated pem </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t10client_keyE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t10client_keyE"></span><span id="_CPPv2N29esp_websocket_client_config_t10client_keyE"></span><span id="esp_websocket_client_config_t::client_key__cCP"></span><span class="target" id="structesp__websocket__client__config__t_1aca91a6cc5bab26106fa003acd5b1943b"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">client_key</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t10client_keyE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Pointer to private key data in PEM or DER format for SSL mutual authentication, default is NULL, not required if mutual authentication is not needed. If it is not NULL, also <code class="docutils literal notranslate"><span class="pre">client_cert</span></code> has to be provided. PEM-format must have a terminating NULL-character. DER-format requires the length to be passed in client_key_len </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t14client_key_lenE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t14client_key_lenE"></span><span id="_CPPv2N29esp_websocket_client_config_t14client_key_lenE"></span><span id="esp_websocket_client_config_t::client_key_len__s"></span><span class="target" id="structesp__websocket__client__config__t_1a3bcc7890cc9caaf8af1ce3aa02df43ab"></span><span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">client_key_len</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t14client_key_lenE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Length of the buffer pointed to by client_key_pem. May be 0 for null-terminated pem </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t9transportE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t9transportE"></span><span id="_CPPv2N29esp_websocket_client_config_t9transportE"></span><span id="esp_websocket_client_config_t::transport__esp_websocket_transport_t"></span><span class="target" id="structesp__websocket__client__config__t_1a687429a288d44ff2941bb00b8b14ed55"></span><a class="reference internal" href="#_CPPv425esp_websocket_transport_t" title="esp_websocket_transport_t"><span class="n"><span class="pre">esp_websocket_transport_t</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">transport</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t9transportE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Websocket transport type, see `esp_websocket_transport_t </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t11subprotocolE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t11subprotocolE"></span><span id="_CPPv2N29esp_websocket_client_config_t11subprotocolE"></span><span id="esp_websocket_client_config_t::subprotocol__cCP"></span><span class="target" id="structesp__websocket__client__config__t_1a40dd329adb08d96493e63fac7812034d"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">subprotocol</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t11subprotocolE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Websocket subprotocol </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t10user_agentE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t10user_agentE"></span><span id="_CPPv2N29esp_websocket_client_config_t10user_agentE"></span><span id="esp_websocket_client_config_t::user_agent__cCP"></span><span class="target" id="structesp__websocket__client__config__t_1a54bb4948a7303100681ee315637933b0"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">user_agent</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t10user_agentE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Websocket user-agent </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t7headersE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t7headersE"></span><span id="_CPPv2N29esp_websocket_client_config_t7headersE"></span><span id="esp_websocket_client_config_t::headers__cCP"></span><span class="target" id="structesp__websocket__client__config__t_1ad1c6a18d8d634892c01e1ac8f26cc833"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">headers</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t7headersE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Websocket additional headers </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t20pingpong_timeout_secE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t20pingpong_timeout_secE"></span><span id="_CPPv2N29esp_websocket_client_config_t20pingpong_timeout_secE"></span><span id="esp_websocket_client_config_t::pingpong_timeout_sec__i"></span><span class="target" id="structesp__websocket__client__config__t_1a24733c24624c517da389db13bb7bba24"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">pingpong_timeout_sec</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t20pingpong_timeout_secE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Period before connection is aborted due to no PONGs received </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t23disable_pingpong_disconE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t23disable_pingpong_disconE"></span><span id="_CPPv2N29esp_websocket_client_config_t23disable_pingpong_disconE"></span><span id="esp_websocket_client_config_t::disable_pingpong_discon__b"></span><span class="target" id="structesp__websocket__client__config__t_1ab999fe777e719bb619b10796fb41dde7"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">disable_pingpong_discon</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t23disable_pingpong_disconE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Disable auto-disconnect due to no PONG received within pingpong_timeout_sec </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t19use_global_ca_storeE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t19use_global_ca_storeE"></span><span id="_CPPv2N29esp_websocket_client_config_t19use_global_ca_storeE"></span><span id="esp_websocket_client_config_t::use_global_ca_store__b"></span><span class="target" id="structesp__websocket__client__config__t_1a4b811b30ac0acc5e1dfdd95394620a76"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">use_global_ca_store</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t19use_global_ca_storeE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Use a global ca_store for all the connections in which this bool is set. </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t27skip_cert_common_name_checkE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t27skip_cert_common_name_checkE"></span><span id="_CPPv2N29esp_websocket_client_config_t27skip_cert_common_name_checkE"></span><span id="esp_websocket_client_config_t::skip_cert_common_name_check__b"></span><span class="target" id="structesp__websocket__client__config__t_1a659d5ff42a91bffb52c6930b98d98084"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">skip_cert_common_name_check</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t27skip_cert_common_name_checkE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Skip any validation of server certificate CN field </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t17keep_alive_enableE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t17keep_alive_enableE"></span><span id="_CPPv2N29esp_websocket_client_config_t17keep_alive_enableE"></span><span id="esp_websocket_client_config_t::keep_alive_enable__b"></span><span class="target" id="structesp__websocket__client__config__t_1a332985f575f97e78662b9f5ba7b863a2"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">keep_alive_enable</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t17keep_alive_enableE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Enable keep-alive timeout </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t15keep_alive_idleE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t15keep_alive_idleE"></span><span id="_CPPv2N29esp_websocket_client_config_t15keep_alive_idleE"></span><span id="esp_websocket_client_config_t::keep_alive_idle__i"></span><span class="target" id="structesp__websocket__client__config__t_1af74803f5fe69582027dd6d793e4a2650"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">keep_alive_idle</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t15keep_alive_idleE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Keep-alive idle time. Default is 5 (second) </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t19keep_alive_intervalE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t19keep_alive_intervalE"></span><span id="_CPPv2N29esp_websocket_client_config_t19keep_alive_intervalE"></span><span id="esp_websocket_client_config_t::keep_alive_interval__i"></span><span class="target" id="structesp__websocket__client__config__t_1a849e11f479ba778bf6d86f5acbf93ee2"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">keep_alive_interval</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t19keep_alive_intervalE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Keep-alive interval time. Default is 5 (second) </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t16keep_alive_countE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t16keep_alive_countE"></span><span id="_CPPv2N29esp_websocket_client_config_t16keep_alive_countE"></span><span id="esp_websocket_client_config_t::keep_alive_count__i"></span><span class="target" id="structesp__websocket__client__config__t_1a7c541762557f38ae6162915db4c4f4df"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">keep_alive_count</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t16keep_alive_countE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Keep-alive packet retry send count. Default is 3 counts </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t20reconnect_timeout_msE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t20reconnect_timeout_msE"></span><span id="_CPPv2N29esp_websocket_client_config_t20reconnect_timeout_msE"></span><span id="esp_websocket_client_config_t::reconnect_timeout_ms__i"></span><span class="target" id="structesp__websocket__client__config__t_1a8b140e5beca1aa6dce98336fa04e5c59"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">reconnect_timeout_ms</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t20reconnect_timeout_msE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Reconnect after this value in miliseconds if disable_auto_reconnect is not enabled (defaults to 10s) </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t18network_timeout_msE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t18network_timeout_msE"></span><span id="_CPPv2N29esp_websocket_client_config_t18network_timeout_msE"></span><span id="esp_websocket_client_config_t::network_timeout_ms__i"></span><span class="target" id="structesp__websocket__client__config__t_1ab0b2a4367229ea86b6936545a2a7c6c1"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">network_timeout_ms</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t18network_timeout_msE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Abort network operation if it is not completed after this value, in milliseconds (defaults to 10s) </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t17ping_interval_secE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t17ping_interval_secE"></span><span id="_CPPv2N29esp_websocket_client_config_t17ping_interval_secE"></span><span id="esp_websocket_client_config_t::ping_interval_sec__s"></span><span class="target" id="structesp__websocket__client__config__t_1ad751840e34c2b8f2cf17d175f3b64d29"></span><span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ping_interval_sec</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t17ping_interval_secE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Websocket ping interval, defaults to 10 seconds if not set </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp var">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N29esp_websocket_client_config_t7if_nameE">
|
||||
<span id="_CPPv3N29esp_websocket_client_config_t7if_nameE"></span><span id="_CPPv2N29esp_websocket_client_config_t7if_nameE"></span><span id="esp_websocket_client_config_t::if_name__ifreqP"></span><span class="target" id="structesp__websocket__client__config__t_1a095cfc11f5503376946ef8d98f395432"></span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">ifreq</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">if_name</span></span></span><a class="headerlink" href="#_CPPv4N29esp_websocket_client_config_t7if_nameE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>The name of interface for data to go through. Use the default interface without setting </p>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
</section>
|
||||
<section id="type-definitions">
|
||||
<h3>Type Definitions<a class="headerlink" href="#type-definitions" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="cpp type">
|
||||
<dt class="sig sig-object cpp" id="_CPPv429esp_websocket_client_handle_t">
|
||||
<span id="_CPPv329esp_websocket_client_handle_t"></span><span id="_CPPv229esp_websocket_client_handle_t"></span><span id="esp_websocket_client_handle_t"></span><span class="target" id="esp__websocket__client_8h_1a495fdc2516a29dc75c569f7bb96259a1"></span><span class="k"><span class="pre">typedef</span></span><span class="w"> </span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="n"><span class="pre">esp_websocket_client</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">esp_websocket_client_handle_t</span></span></span><a class="headerlink" href="#_CPPv429esp_websocket_client_handle_t" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</section>
|
||||
<section id="enumerations">
|
||||
<h3>Enumerations<a class="headerlink" href="#enumerations" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="cpp enum">
|
||||
<dt class="sig sig-object cpp" id="_CPPv424esp_websocket_event_id_t">
|
||||
<span id="_CPPv324esp_websocket_event_id_t"></span><span id="_CPPv224esp_websocket_event_id_t"></span><span class="target" id="esp__websocket__client_8h_1a781bbfb5f24162bd806d09cefe317b10"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">esp_websocket_event_id_t</span></span></span><a class="headerlink" href="#_CPPv424esp_websocket_event_id_t" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Websocket Client events id. </p>
|
||||
<p><em>Values:</em></p>
|
||||
<dl class="cpp enumerator">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N24esp_websocket_event_id_t19WEBSOCKET_EVENT_ANYE">
|
||||
<span id="_CPPv3N24esp_websocket_event_id_t19WEBSOCKET_EVENT_ANYE"></span><span id="_CPPv2N24esp_websocket_event_id_t19WEBSOCKET_EVENT_ANYE"></span><span class="target" id="esp__websocket__client_8h_1a781bbfb5f24162bd806d09cefe317b10a0345410f63b26740cd502910fd6775f1"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WEBSOCKET_EVENT_ANY</span></span></span><a class="headerlink" href="#_CPPv4N24esp_websocket_event_id_t19WEBSOCKET_EVENT_ANYE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="cpp enumerator">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N24esp_websocket_event_id_t21WEBSOCKET_EVENT_ERRORE">
|
||||
<span id="_CPPv3N24esp_websocket_event_id_t21WEBSOCKET_EVENT_ERRORE"></span><span id="_CPPv2N24esp_websocket_event_id_t21WEBSOCKET_EVENT_ERRORE"></span><span class="target" id="esp__websocket__client_8h_1a781bbfb5f24162bd806d09cefe317b10a198ee2b8de3524370d880277122fd296"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WEBSOCKET_EVENT_ERROR</span></span></span><a class="headerlink" href="#_CPPv4N24esp_websocket_event_id_t21WEBSOCKET_EVENT_ERRORE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>This event occurs when there are any errors during execution </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp enumerator">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N24esp_websocket_event_id_t25WEBSOCKET_EVENT_CONNECTEDE">
|
||||
<span id="_CPPv3N24esp_websocket_event_id_t25WEBSOCKET_EVENT_CONNECTEDE"></span><span id="_CPPv2N24esp_websocket_event_id_t25WEBSOCKET_EVENT_CONNECTEDE"></span><span class="target" id="esp__websocket__client_8h_1a781bbfb5f24162bd806d09cefe317b10a26e026f8b057d410dcec4cffc3145235"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WEBSOCKET_EVENT_CONNECTED</span></span></span><a class="headerlink" href="#_CPPv4N24esp_websocket_event_id_t25WEBSOCKET_EVENT_CONNECTEDE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Once the Websocket has been connected to the server, no data exchange has been performed </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp enumerator">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N24esp_websocket_event_id_t28WEBSOCKET_EVENT_DISCONNECTEDE">
|
||||
<span id="_CPPv3N24esp_websocket_event_id_t28WEBSOCKET_EVENT_DISCONNECTEDE"></span><span id="_CPPv2N24esp_websocket_event_id_t28WEBSOCKET_EVENT_DISCONNECTEDE"></span><span class="target" id="esp__websocket__client_8h_1a781bbfb5f24162bd806d09cefe317b10a6ffcb93198d0d9ebe5e958e61befa1c1"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WEBSOCKET_EVENT_DISCONNECTED</span></span></span><a class="headerlink" href="#_CPPv4N24esp_websocket_event_id_t28WEBSOCKET_EVENT_DISCONNECTEDE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>The connection has been disconnected </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp enumerator">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N24esp_websocket_event_id_t20WEBSOCKET_EVENT_DATAE">
|
||||
<span id="_CPPv3N24esp_websocket_event_id_t20WEBSOCKET_EVENT_DATAE"></span><span id="_CPPv2N24esp_websocket_event_id_t20WEBSOCKET_EVENT_DATAE"></span><span class="target" id="esp__websocket__client_8h_1a781bbfb5f24162bd806d09cefe317b10a17f330e93c8dbdb887254aff1193614d"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WEBSOCKET_EVENT_DATA</span></span></span><a class="headerlink" href="#_CPPv4N24esp_websocket_event_id_t20WEBSOCKET_EVENT_DATAE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>When receiving data from the server, possibly multiple portions of the packet </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp enumerator">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N24esp_websocket_event_id_t22WEBSOCKET_EVENT_CLOSEDE">
|
||||
<span id="_CPPv3N24esp_websocket_event_id_t22WEBSOCKET_EVENT_CLOSEDE"></span><span id="_CPPv2N24esp_websocket_event_id_t22WEBSOCKET_EVENT_CLOSEDE"></span><span class="target" id="esp__websocket__client_8h_1a781bbfb5f24162bd806d09cefe317b10a678462f29ce6d0f39690c767280a88e5"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WEBSOCKET_EVENT_CLOSED</span></span></span><a class="headerlink" href="#_CPPv4N24esp_websocket_event_id_t22WEBSOCKET_EVENT_CLOSEDE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>The connection has been closed cleanly </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp enumerator">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N24esp_websocket_event_id_t19WEBSOCKET_EVENT_MAXE">
|
||||
<span id="_CPPv3N24esp_websocket_event_id_t19WEBSOCKET_EVENT_MAXE"></span><span id="_CPPv2N24esp_websocket_event_id_t19WEBSOCKET_EVENT_MAXE"></span><span class="target" id="esp__websocket__client_8h_1a781bbfb5f24162bd806d09cefe317b10a104fe520c71c532635d64e024e9a02cb"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WEBSOCKET_EVENT_MAX</span></span></span><a class="headerlink" href="#_CPPv4N24esp_websocket_event_id_t19WEBSOCKET_EVENT_MAXE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp enum">
|
||||
<dt class="sig sig-object cpp" id="_CPPv425esp_websocket_transport_t">
|
||||
<span id="_CPPv325esp_websocket_transport_t"></span><span id="_CPPv225esp_websocket_transport_t"></span><span class="target" id="esp__websocket__client_8h_1aecb53723a9770b3584483ffc2d97ddc1"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">esp_websocket_transport_t</span></span></span><a class="headerlink" href="#_CPPv425esp_websocket_transport_t" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Websocket Client transport. </p>
|
||||
<p><em>Values:</em></p>
|
||||
<dl class="cpp enumerator">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N25esp_websocket_transport_t27WEBSOCKET_TRANSPORT_UNKNOWNE">
|
||||
<span id="_CPPv3N25esp_websocket_transport_t27WEBSOCKET_TRANSPORT_UNKNOWNE"></span><span id="_CPPv2N25esp_websocket_transport_t27WEBSOCKET_TRANSPORT_UNKNOWNE"></span><span class="target" id="esp__websocket__client_8h_1aecb53723a9770b3584483ffc2d97ddc1a0cab7d9515e6876747d51822097b0616"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WEBSOCKET_TRANSPORT_UNKNOWN</span></span></span><a class="headerlink" href="#_CPPv4N25esp_websocket_transport_t27WEBSOCKET_TRANSPORT_UNKNOWNE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Transport unknown </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp enumerator">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_TCPE">
|
||||
<span id="_CPPv3N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_TCPE"></span><span id="_CPPv2N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_TCPE"></span><span class="target" id="esp__websocket__client_8h_1aecb53723a9770b3584483ffc2d97ddc1a384db78e23ec0b0e5bc0dd108f3bffb7"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WEBSOCKET_TRANSPORT_OVER_TCP</span></span></span><a class="headerlink" href="#_CPPv4N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_TCPE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Transport over tcp </p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="cpp enumerator">
|
||||
<dt class="sig sig-object cpp" id="_CPPv4N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_SSLE">
|
||||
<span id="_CPPv3N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_SSLE"></span><span id="_CPPv2N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_SSLE"></span><span class="target" id="esp__websocket__client_8h_1aecb53723a9770b3584483ffc2d97ddc1a75247f6fb3e8c9381c8cd2fd70a84d2c"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WEBSOCKET_TRANSPORT_OVER_SSL</span></span></span><a class="headerlink" href="#_CPPv4N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_SSLE" title="Permalink to this definition">¶</a><br /></dt>
|
||||
<dd><p>Transport over ssl </p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
|
||||
© Copyright 2016 - 2022, Espressif Systems (Shanghai) Co., Ltd
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<ul class="footer">
|
||||
<li>
|
||||
|
||||
|
||||
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/espressif/sphinx_idf_theme">theme</a> based on <a href="https://github.com/readthedocs/sphinx_rtd_theme">Read the Docs Sphinx Theme</a>.
|
||||
</li>
|
||||
<li class="footer-aside">
|
||||
<a href="./esp-idf-en-master-esp32.pdf" class="fa fa-file-pdf-o"> Download PDF</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html><script type=text/javascript>
|
||||
window.onload =(function() {
|
||||
var myAnchor = document.getElementById('version-select');
|
||||
var mySpan = document.createElement('input');
|
||||
mySpan.setAttribute('type', 'text');
|
||||
mySpan.setAttribute('maxLength', '10');
|
||||
mySpan.value = 'latest';
|
||||
mySpan.setAttribute('disabled', true);
|
||||
myAnchor.parentNode.replaceChild(mySpan, myAnchor);
|
||||
|
||||
var myAnchor = document.getElementById('target-select');
|
||||
var mySpan = document.createElement('input');
|
||||
mySpan.setAttribute('type', 'text');
|
||||
mySpan.setAttribute('maxLength', '10');
|
||||
mySpan.value = 'all targets';
|
||||
mySpan.setAttribute('disabled', true);
|
||||
myAnchor.parentNode.replaceChild(mySpan, myAnchor);
|
||||
|
||||
})();
|
||||
</script>
|
BIN
esp_websocket_client/objects.inv
Normal file
BIN
esp_websocket_client/objects.inv
Normal file
Binary file not shown.
251
esp_websocket_client/search.html
Normal file
251
esp_websocket_client/search.html
Normal file
@@ -0,0 +1,251 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Search - ESP32 - — ESP-Protocols latest documentation</title>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||||
<script src="_static/jquery.js"></script>
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
<script src="_static/clipboard.min.js"></script>
|
||||
<script src="_static/copybutton.js"></script>
|
||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
DOCUMENTATION_OPTIONS.PAGENAME = 'search';
|
||||
DOCUMENTATION_OPTIONS.PROJECT_SLUG = 'esp-idf';
|
||||
DOCUMENTATION_OPTIONS.VERSIONS_URL = 'https://dl.espressif.com/dl/esp-idf/idf_versions.js';
|
||||
DOCUMENTATION_OPTIONS.LANGUAGES = ["en"];
|
||||
DOCUMENTATION_OPTIONS.IDF_TARGET = 'esp32';
|
||||
DOCUMENTATION_OPTIONS.HAS_IDF_TARGETS = ["esp32"]
|
||||
DOCUMENTATION_OPTIONS.RELEASE = 'latest';
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" src="https://dl.espressif.com/dl/esp-idf/idf_versions.js"></script>
|
||||
<script type="text/javascript" src="_static/searchtools.js"></script>
|
||||
|
||||
|
||||
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/copybutton.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/theme_overrides.css" type="text/css" />
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="#" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home" alt="Documentation Home"> ESP-Protocols
|
||||
|
||||
|
||||
|
||||
|
||||
<img src="_static/espressif-logo.svg" class="logo" alt="Logo"/>
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
<div class="selectors">
|
||||
<select id="target-select" style="width: 150px;" hidden>
|
||||
<option value="" disabled selected>Choose target...</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="selectors">
|
||||
<select id="version-select" style="width: 150px;" hidden>
|
||||
<option value="" disabled selected>Choose version...</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="#" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Local TOC -->
|
||||
<div class="local-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">ESP-Protocols</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li>Search</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
|
||||
<a href="https://github.com/espressif/esp-docs/blob/4ccc32f/docs/en/search" class="fa fa-github"> Edit on GitHub</a>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<noscript>
|
||||
<div id="fallback" class="admonition warning">
|
||||
<p class="last">
|
||||
Please activate JavaScript to enable the search functionality.
|
||||
</p>
|
||||
</div>
|
||||
</noscript>
|
||||
|
||||
|
||||
<div id="search-results">
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
|
||||
© Copyright 2016 - 2022, Espressif Systems (Shanghai) Co., Ltd
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<ul class="footer">
|
||||
<li>
|
||||
|
||||
|
||||
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/espressif/sphinx_idf_theme">theme</a> based on <a href="https://github.com/readthedocs/sphinx_rtd_theme">Read the Docs Sphinx Theme</a>.
|
||||
</li>
|
||||
<li class="footer-aside">
|
||||
<a href="./esp-idf-en-master-esp32.pdf" class="fa fa-file-pdf-o"> Download PDF</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function() { Search.loadIndex("searchindex.js"); });
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" id="searchindexloader"></script>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
1
esp_websocket_client/searchindex.js
Normal file
1
esp_websocket_client/searchindex.js
Normal file
File diff suppressed because one or more lines are too long
@@ -1 +1,2 @@
|
||||
<a href="esp_modem/index.html">esp-modem</a>
|
||||
<a href="esp_websocket_client/index.html">esp-websocket-client</a>
|
||||
|
Reference in New Issue
Block a user