How do I build a minimal WASM HTTP client?

To build a minimal WASM HTTP client in Go, you can use the "net/http" package to make HTTP requests directly from WebAssembly. Here's a simple example that demonstrates how to achieve this.

package main import ( "syscall/js" "net/http" "io/ioutil" ) func fetch(url string) { resp, err := http.Get(url) if err != nil { js.Global().Get("console").Call("log", "Error fetching URL:", err) return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { js.Global().Get("console").Call("log", "Error reading response body:", err) return } js.Global().Get("console").Call("log", "Response:", string(body)) } func main() { c := make(chan struct{}, 0) js.Global().Get("document").Call("getElementById", "fetchButton").Call("addEventListener", "click", js.FuncOf(func(this js.Value, p []js.Value) interface{} { fetch("https://api.example.com/data") return nil })) <-c }

keywords: WASM Go HTTP client WebAssembly net/http fetch API