Slide 30 de 37

Rede: WebSockets

proc handle(conn: hive.net.WsConnection): void {
	if hive.net.wsReceive(conn) is Result.Ok(msg) {
		hive.net.wsSend(conn, "eco: {msg}")
	}
}

proc main(): void {
	hive.net.wsServe(8081, handle)
}
O suporte a WebSocket de hive.net é RFC 6455 do início ao fim: o handshake, os cabeçalhos de frame, a mascaração, o ping/pong e a fragmentação são responsabilidade do runtime, e um programa só vê mensagens inteiras como uma Str. wsServe(port, handler) serve conexões da mesma forma que httpServe serve requisições, chamando um proc(WsConnection): void uma vez por conexão; wsConnect disca uma como cliente, e wsRequest lê de volta o HttpRequest que a abriu. wsClose termina uma conexão deste lado; um par que desliga por conta própria responde como "Closed" — o fim comum de uma conversa, não uma falha a ser reportada.