components-contrib/middleware/http/wasm
Crypt Keeper f96873428e
Adds http-wasm middleware to replace basic (#2239)
* Adds http-wasm middleware to replace basic

Signed-off-by: Adrian Cole <adrian@tetrate.io>

* pre-release dapr/kit for logging

Signed-off-by: Adrian Cole <adrian@tetrate.io>

* Log.IsEnabled

Signed-off-by: Adrian Cole <adrian@tetrate.io>

Signed-off-by: Adrian Cole <adrian@tetrate.io>
2022-11-03 20:03:48 -07:00
..
example Adds http-wasm middleware to replace basic (#2239) 2022-11-03 20:03:48 -07:00
internal Adds http-wasm middleware to replace basic (#2239) 2022-11-03 20:03:48 -07:00
Makefile Adds http-wasm middleware to replace basic (#2239) 2022-11-03 20:03:48 -07:00
README.md Adds http-wasm middleware to replace basic (#2239) 2022-11-03 20:03:48 -07:00
benchmark_test.go Adds http-wasm middleware to replace basic (#2239) 2022-11-03 20:03:48 -07:00
httpwasm.go Adds http-wasm middleware to replace basic (#2239) 2022-11-03 20:03:48 -07:00
httpwasm_test.go Adds http-wasm middleware to replace basic (#2239) 2022-11-03 20:03:48 -07:00

README.md

WebAssembly Middleware

This component lets you manipulate an incoming request or serve a response with custom logic compiled using the htp-wasm Application Binary Interface (ABI). The handle_request function receives an incoming request and can manipulate it or serve a response as necessary.

Please see the documentation for general configuration.

Generating Wasm

To compile your wasm, you must compile source using an SDK such as http-wasm-guest-tinygo. You can also make a copy of hello.go and replace the handler.HandleFn function with your custom logic.

If using TinyGo, compile like so and set the path attribute to the output:

tinygo build -o router.wasm -scheduler=none --no-debug -target=wasi router.go`

Notes

  • This is an alpha feature, so configuration is subject to change.
  • This module implements the host side of the http-wasm handler protocol.
  • This uses wazero for the WebAssembly runtime as it has no dependencies, nor relies on CGO. This allows installation without shared libraries.
  • Many WebAssembly compilers leave memory unbounded and/or set to 16MB. To avoid resource exhaustion, assign concurrency controls.