Asynchronní webový server - udržovaná verze
Go to file
Pavel Brychta 8890e2851c Fix z githubu (originalni repozitar). 2024-04-02 15:04:33 +02:00
docs Aktualizace na verzi 2.7.0 2024-02-06 17:39:53 +01:00
examples Aktualizace na verzi 2.7.0 2024-02-06 17:39:53 +01:00
src Fix z githubu (originalni repozitar). 2024-04-02 15:04:33 +02:00
LICENSE Pouzita verze 2.5.1 odsud https://github.com/mathieucarbou/ESPAsyncWebServer (mela by obsahovat vsechny opravy + dalsi vylepseni). 2024-01-27 09:56:20 +01:00
README.md Aktualizace na verzi 2.7.0 2024-02-06 17:39:53 +01:00
library.json_ Aktualizace na verzi 2.7.0 2024-02-06 17:39:53 +01:00
library.properties Aktualizace na verzi 2.7.0 2024-02-06 17:39:53 +01:00
platformio.ini Aktualizace na verzi 2.7.0 2024-02-06 17:39:53 +01:00

README.md

ESP Async WebServer

License: LGPL 3.0 Continuous Integration PlatformIO Registry

Async Web Server for ESP31B

This fork is based on https://github.com/yubox-node-org/ESPAsyncWebServer and includes all the concurrency fixes.

Changes in this fork

  • Removed SPIFFSEditor
  • Deployed in PlatformIO registry and Arduino IDE library manager
  • CI
  • Some code cleanup
  • SSE_MAX_QUEUED_MESSAGES to control the maximum number of messages that can be queued for a SSE client
  • write() function public in AsyncEventSource.h
  • Arduino Json 7 compatibility and by default, still compatible with 6 (AsyncJson.h)
  • WS_MAX_QUEUED_MESSAGES: control the maximum number of messages that can be queued for a Websocket client
  • Resurrected AsyncWebSocketMessageBuffer and makeBuffer() in order to make the fork API-compatible with the original library from me-no-dev regarding WebSocket.
  • #5: set real "Last-Modified" header based on file's LastWrite time (@vortigont)

Documentation

Usage and API stays the same as the original library. Please look at the original libraries for more examples and documentation.

https://github.com/yubox-node-org/ESPAsyncWebServer

AsyncWebSocketMessageBuffer and makeBuffer()

The fork from yubox-node-org introduces some breaking API changes compared to the original library, especially regarding the use of std::shared_ptr<std::vector<uint8_t>> for WebSocket.

This fork is compatible with the original library from me-no-dev regarding WebSocket, and wraps the optimizations done by yubox-node-org in the AsyncWebSocketMessageBuffer class. So you have the choice of which API to use. I strongly suggest to use the optimized API from yubox-node-org as it is much more efficient.

Here is an example for serializing a Json document in a websocket message buffer. This code is compatible with any forks, but not optimized:

void send(JsonDocument& doc) {
  const size_t len = measureJson(doc);

  // original API from me-no-dev
  AsyncWebSocketMessageBuffer* buffer = _ws->makeBuffer(len);
  assert(buffer); // up to you to keep or remove this
  serializeJson(doc, buffer->get(), len);
  _ws->textAll(buffer);
}

Here is an example for serializing a Json document in a more optimized way, and compatible with both forks:

void send(JsonDocument& doc) {
  const size_t len = measureJson(doc);

#if defined(ASYNCWEBSERVER_FORK_mathieucarbou)

  // this fork (originally from yubox-node-org), uses another API with shared pointer that better support concurrent use cases then the original project
  auto buffer = std::make_shared<std::vector<uint8_t>>(len);
  assert(buffer); // up to you to keep or remove this
  serializeJson(doc, buffer->data(), len);
  _ws->textAll(std::move(buffer));

#else

  // original API from me-no-dev
  AsyncWebSocketMessageBuffer* buffer = _ws->makeBuffer(len);
  assert(buffer); // up to you to keep or remove this
  serializeJson(doc, buffer->get(), len);
  _ws->textAll(buffer);

#endif
}