Build a Web Server
A complete HTTP server in Wyn — under 30 lines.
The Server
wyn
var server = Http.listen(8080)
println("Listening on http://localhost:8080")
while true {
var req = Http.accept(server)
var parts = req.split("|")
var method = parts[0]
var path = parts[1]
Log.info(method + " " + path)
if path == "/" {
Http.respond(req, 200, "<h1>Hello from Wyn! 🐉</h1>")
} else if path == "/api/time" {
var now = "${DateTime.now()}"
Http.respond(req, 200, "{\"time\": " + now + "}")
} else {
Http.respond(req, 404, "Not Found")
}
}Run It
sh
wyn run server.wynThen visit http://localhost:8080 in your browser.
Add Concurrency
Handle requests in parallel with spawn:
wyn
var server = Http.listen(8080)
println("Listening on :8080")
while true {
var req = Http.accept(server)
spawn handle(req)
}
fn handle(req: string) {
var parts = req.split("|")
var path = parts[1]
Log.info("handling " + path)
if path == "/" {
Http.respond(req, 200, "Hello!")
} else {
Http.respond(req, 404, "Not Found")
}
}Each request runs on its own green thread — lightweight coroutines, not OS threads.
Build for Production
sh
wyn build server.wyn --release -o server
./server # 32KB binary, starts instantly