mirror of
https://github.com/me-no-dev/ESPAsyncWebServer.git
synced 2025-08-15 10:30:58 +02:00
AsyncTCPSock support
This commit is contained in:
32
README.md
32
README.md
@@ -17,18 +17,18 @@ This fork is based on [yubox-node-org/ESPAsyncWebServer](https://github.com/yubo
|
||||
|
||||
- [Coordinate and dependencies](#coordinate-and-dependencies)
|
||||
- [Changes in this fork](#changes-in-this-fork)
|
||||
- [Performance](#performance)
|
||||
- [Important recommendations](#important-recommendations)
|
||||
- [`AsyncWebSocketMessageBuffer` and `makeBuffer()`](#asyncwebsocketmessagebuffer-and-makebuffer)
|
||||
- [How to replace a response](#how-to-replace-a-response)
|
||||
- [How to use Middleware](#how-to-use-middleware)
|
||||
- [How to use authentication with AuthenticationMiddleware](#how-to-use-authentication-with-authenticationmiddleware)
|
||||
- [Migration to Middleware to improve performance and memory usage](#migration-to-middleware-to-improve-performance-and-memory-usage)
|
||||
- [Performance](#performance)
|
||||
- [Original Documentation](#original-documentation)
|
||||
|
||||
## Coordinate and dependencies
|
||||
|
||||
**WARNING** The library name was changed from `ESP Async WebServer` to `ESPAsyncWebServer` as per the Arduino Lint recommendations.
|
||||
**WARNING** The library name was changed from `ESP Async WebServer` to `ESPAsyncWebServer` as per the Arduino Lint recommendations, but its name had to stay `ESP Async WebServer` in Arduino Registry.
|
||||
|
||||
**PlatformIO / pioarduino:**
|
||||
|
||||
@@ -40,7 +40,7 @@ lib_deps = mathieucarbou/ESPAsyncWebServer @ 3.3.14
|
||||
|
||||
**Dependencies:**
|
||||
|
||||
- **ESP32**: `mathieucarbou/AsyncTCP @ 3.2.10` (Arduino IDE: [https://github.com/mathieucarbou/AsyncTCP#v3.2.10](https://github.com/mathieucarbou/AsyncTCP/releases))
|
||||
- **ESP32 with AsyncTCP**: `mathieucarbou/AsyncTCP @ 3.2.10` (Arduino IDE: [https://github.com/mathieucarbou/AsyncTCP#v3.2.10](https://github.com/mathieucarbou/AsyncTCP/releases))
|
||||
- **ESP8266**: `esphome/ESPAsyncTCP-esphome @ 2.0.0` (Arduino IDE: [https://github.com/mathieucarbou/esphome-ESPAsyncTCP#v2.0.0](https://github.com/mathieucarbou/esphome-ESPAsyncTCP/releases/tag/v2.0.0))
|
||||
- **RP2040**: `khoih-prog/AsyncTCP_RP2040W @ 1.2.0` (Arduino IDE: [https://github.com/khoih-prog/AsyncTCP_RP2040W#v1.2.0](https://github.com/khoih-prog/AsyncTCP_RP2040W/releases/tag/v1.2.0))
|
||||
|
||||
@@ -69,6 +69,21 @@ lib_deps = mathieucarbou/ESPAsyncWebServer @ 3.3.14
|
||||
- (perf) Lot of code cleanup and optimizations
|
||||
- (perf) Performance improvements in terms of memory, speed and size
|
||||
|
||||
## Performance
|
||||
|
||||
```bash
|
||||
> brew install autocannon
|
||||
> autocannon -c 10 -w 10 -d 20 http://192.168.4.1
|
||||
```
|
||||
|
||||
Here is a capture of the `perf-test-AsyncTCP` PIO environment running with `mathieucarbou/AsyncTCP @ 3.2.10` and `mathieucarbou/ESPAsyncWebServer @ 3.3.14`:
|
||||
|
||||
[](https://mathieu.carbou.me/ESPAsyncWebServer/perf-c10.png)
|
||||
|
||||
Here is a capture of the `perf-test-AsyncTCPSock` PIO environment running with `https://github.com/mathieucarbou/AsyncTCPSock/archive/refs/tags/v1.0.1-dev.zip` and `mathieucarbou/ESPAsyncWebServer @ 3.3.14`:
|
||||
|
||||
[](https://mathieu.carbou.me/ESPAsyncWebServer/perf-c10-asynctcpsock.png)
|
||||
|
||||
## Important recommendations
|
||||
|
||||
Most of the crashes are caused by improper configuration of the library for the project.
|
||||
@@ -222,17 +237,6 @@ myHandler.addMiddleware(&authMiddleware); // add authentication to a specific ha
|
||||
These callbacks can be called multiple times during request parsing, so this is up to the user to now call the `AuthenticationMiddleware.allowed(request)` if needed and ideally when the method is called for the first time.
|
||||
These callbacks are also not triggering the whole middleware chain since they are not part of the request processing workflow (they are not the final handler).
|
||||
|
||||
## Performance
|
||||
|
||||
With the `perf-test` PIO environment:
|
||||
|
||||
```bash
|
||||
> brew install autocannon
|
||||
> autocannon -c 10 -w 10 -d 20 http://192.168.4.1
|
||||
```
|
||||
|
||||
[](https://mathieu.carbou.me/ESPAsyncWebServer/perf-c10.png)
|
||||
|
||||
## Original Documentation
|
||||
|
||||
- [Why should you care](#why-should-you-care)
|
||||
|
@@ -17,18 +17,18 @@ This fork is based on [yubox-node-org/ESPAsyncWebServer](https://github.com/yubo
|
||||
|
||||
- [Coordinate and dependencies](#coordinate-and-dependencies)
|
||||
- [Changes in this fork](#changes-in-this-fork)
|
||||
- [Performance](#performance)
|
||||
- [Important recommendations](#important-recommendations)
|
||||
- [`AsyncWebSocketMessageBuffer` and `makeBuffer()`](#asyncwebsocketmessagebuffer-and-makebuffer)
|
||||
- [How to replace a response](#how-to-replace-a-response)
|
||||
- [How to use Middleware](#how-to-use-middleware)
|
||||
- [How to use authentication with AuthenticationMiddleware](#how-to-use-authentication-with-authenticationmiddleware)
|
||||
- [Migration to Middleware to improve performance and memory usage](#migration-to-middleware-to-improve-performance-and-memory-usage)
|
||||
- [Performance](#performance)
|
||||
- [Original Documentation](#original-documentation)
|
||||
|
||||
## Coordinate and dependencies
|
||||
|
||||
**WARNING** The library name was changed from `ESP Async WebServer` to `ESPAsyncWebServer` as per the Arduino Lint recommendations.
|
||||
**WARNING** The library name was changed from `ESP Async WebServer` to `ESPAsyncWebServer` as per the Arduino Lint recommendations, but its name had to stay `ESP Async WebServer` in Arduino Registry.
|
||||
|
||||
**PlatformIO / pioarduino:**
|
||||
|
||||
@@ -40,7 +40,7 @@ lib_deps = mathieucarbou/ESPAsyncWebServer @ 3.3.14
|
||||
|
||||
**Dependencies:**
|
||||
|
||||
- **ESP32**: `mathieucarbou/AsyncTCP @ 3.2.10` (Arduino IDE: [https://github.com/mathieucarbou/AsyncTCP#v3.2.10](https://github.com/mathieucarbou/AsyncTCP/releases))
|
||||
- **ESP32 with AsyncTCP**: `mathieucarbou/AsyncTCP @ 3.2.10` (Arduino IDE: [https://github.com/mathieucarbou/AsyncTCP#v3.2.10](https://github.com/mathieucarbou/AsyncTCP/releases))
|
||||
- **ESP8266**: `esphome/ESPAsyncTCP-esphome @ 2.0.0` (Arduino IDE: [https://github.com/mathieucarbou/esphome-ESPAsyncTCP#v2.0.0](https://github.com/mathieucarbou/esphome-ESPAsyncTCP/releases/tag/v2.0.0))
|
||||
- **RP2040**: `khoih-prog/AsyncTCP_RP2040W @ 1.2.0` (Arduino IDE: [https://github.com/khoih-prog/AsyncTCP_RP2040W#v1.2.0](https://github.com/khoih-prog/AsyncTCP_RP2040W/releases/tag/v1.2.0))
|
||||
|
||||
@@ -69,6 +69,21 @@ lib_deps = mathieucarbou/ESPAsyncWebServer @ 3.3.14
|
||||
- (perf) Lot of code cleanup and optimizations
|
||||
- (perf) Performance improvements in terms of memory, speed and size
|
||||
|
||||
## Performance
|
||||
|
||||
```bash
|
||||
> brew install autocannon
|
||||
> autocannon -c 10 -w 10 -d 20 http://192.168.4.1
|
||||
```
|
||||
|
||||
Here is a capture of the `perf-test-AsyncTCP` PIO environment running with `mathieucarbou/AsyncTCP @ 3.2.10` and `mathieucarbou/ESPAsyncWebServer @ 3.3.14`:
|
||||
|
||||
[](https://mathieu.carbou.me/ESPAsyncWebServer/perf-c10.png)
|
||||
|
||||
Here is a capture of the `perf-test-AsyncTCPSock` PIO environment running with `https://github.com/mathieucarbou/AsyncTCPSock/archive/refs/tags/v1.0.1-dev.zip` and `mathieucarbou/ESPAsyncWebServer @ 3.3.14`:
|
||||
|
||||
[](https://mathieu.carbou.me/ESPAsyncWebServer/perf-c10-asynctcpsock.png)
|
||||
|
||||
## Important recommendations
|
||||
|
||||
Most of the crashes are caused by improper configuration of the library for the project.
|
||||
@@ -222,17 +237,6 @@ myHandler.addMiddleware(&authMiddleware); // add authentication to a specific ha
|
||||
These callbacks can be called multiple times during request parsing, so this is up to the user to now call the `AuthenticationMiddleware.allowed(request)` if needed and ideally when the method is called for the first time.
|
||||
These callbacks are also not triggering the whole middleware chain since they are not part of the request processing workflow (they are not the final handler).
|
||||
|
||||
## Performance
|
||||
|
||||
With the `perf-test` PIO environment:
|
||||
|
||||
```bash
|
||||
> brew install autocannon
|
||||
> autocannon -c 10 -w 10 -d 20 http://192.168.4.1
|
||||
```
|
||||
|
||||
[](https://mathieu.carbou.me/ESPAsyncWebServer/perf-c10.png)
|
||||
|
||||
## Original Documentation
|
||||
|
||||
- [Why should you care](#why-should-you-care)
|
||||
|
BIN
docs/perf-c10-asynctcpsock.png
Normal file
BIN
docs/perf-c10-asynctcpsock.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 303 KiB |
@@ -50,11 +50,18 @@ platform = https://github.com/pioarduino/platform-espressif32/releases/download/
|
||||
; board = esp32-s3-devkitc-1
|
||||
; board = esp32-c6-devkitc-1
|
||||
|
||||
[env:perf-test]
|
||||
[env:perf-test-AsyncTCP]
|
||||
platform = https://github.com/pioarduino/platform-espressif32/releases/download/53.03.10-rc1/platform-espressif32.zip
|
||||
build_flags = ${env.build_flags}
|
||||
-D PERF_TEST=1
|
||||
|
||||
[env:perf-test-AsyncTCPSock]
|
||||
platform = https://github.com/pioarduino/platform-espressif32/releases/download/53.03.10-rc1/platform-espressif32.zip
|
||||
lib_deps =
|
||||
https://github.com/mathieucarbou/AsyncTCPSock/archive/refs/tags/v1.0.1-dev.zip
|
||||
build_flags = ${env.build_flags}
|
||||
-D PERF_TEST=1
|
||||
|
||||
[env:esp8266]
|
||||
platform = espressif8266
|
||||
board = huzzah
|
||||
|
Reference in New Issue
Block a user