WebAssembly Test Server
Simple Go web server for serving WebAssembly files with correct MIME types.
Quick Start
# Build and run the server
go run server.go
# Or with custom port
go run server.go -port 3000
# Or serve from a different directory
go run server.go -dir /path/to/wasm/files
Build and Install
# Build binary
go build -o wasm-server server.go
# Run
./wasm-server
# Install to PATH
go install
Usage
Once the server is running, open your browser to:
The server will serve:
index.html- Main HTML pagehello.js- JavaScript loader for WASMhello.wasm- WebAssembly binary modulehello.wat- WebAssembly text format (for reference)
Files
- server.go - Go web server with WASM MIME type support
- index.html - HTML page that loads the WASM module
- hello.js - JavaScript glue code to instantiate and run WASM
- hello.wasm - Compiled WebAssembly binary
- hello.wat - WebAssembly text format source
Building WASM Files
From WAT (WebAssembly Text Format)
# Install wabt tools
sudo apt install wabt
# Compile WAT to WASM
wat2wasm hello.wat -o hello.wasm
# Disassemble WASM back to WAT
wasm2wat hello.wasm -o hello.wat
From Go (using TinyGo)
# Install TinyGo
wget https://github.com/tinygo-org/tinygo/releases/download/v0.31.0/tinygo_0.31.0_amd64.deb
sudo dpkg -i tinygo_0.31.0_amd64.deb
# Create Go program
cat > main.go << 'EOF'
package main
import "fmt"
func main() {
fmt.Println("Hello from Go WASM!")
}
EOF
# Compile to WASM
tinygo build -o main.wasm -target=wasm main.go
# Get the WASM runtime helper
cp $(tinygo env TINYGOROOT)/targets/wasm_exec.js .
Browser Console
Open your browser's developer console (F12) to see the output from the WASM module.
The hello.wasm module should print "Hello, World!" to the console.
CORS Headers
The server includes CORS headers to allow:
- Cross-origin requests during development
- Loading WASM modules from different origins
This is useful when developing and testing WASM modules.