Slide 29 de 37

Rede: HTTP

proc handle(request: hive.net.HttpRequest): hive.net.HttpResponse {
	headers := [["Content-Type", "text/plain"]]
	return hive.net.HttpResponse(200, headers, "olá, {request.url}!\n")
}

proc main(): void {
	hive.net.httpServe(8080, handle)
}
O canto HTTP de hive.net não precisa de dependência externa em nenhuma das direções. httpServe(port, handler) inicia um servidor que bloqueia para sempre, chamando um proc(HttpRequest): HttpResponse uma vez por requisição, cada uma em sua própria thread — exatamente a forma do handler que está servindo esta própria página. httpRequest realiza uma requisição de cliente e responde com um Result, já que não obter resposta alguma — uma URL inválida, uma conexão recusada, um timeout — é um Result.Error em vez de um HttpResponse vazio. resolve e localAddress completam o módulo: o primeiro busca todos os endereços atrás de um nome, o segundo é o endereço pelo qual outra máquina alcançaria esta.