
Programo un servidor web muy sencillo que sirve archivos locales desde un directorio definido, este puede ser optimizado de varias maneras y mejorado para soportar SSL y otras funcionalidades, yo lo utilizo para probar aplicaciones WASM de forma local.
Código
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"flag" | |
"fmt" | |
"log" | |
"net/http" | |
"os" | |
) | |
var ( | |
serverHost = "" // interfaz de escucha = todas | |
serverPort = 8080 // puerto de escucha | |
publicDir = "www" // directorio público | |
) | |
func init() { | |
// obteniendo valores por parámetros de línea de comandos | |
serverPort = *flag.Int( | |
"p", | |
serverPort, | |
"Puerto de escucha", | |
) | |
publicDir = *flag.String( | |
"dir", | |
publicDir, | |
"directorio público", | |
) | |
flag.Parse() | |
// validando directorio | |
dir, err := os.Open(publicDir) | |
if err != nil { | |
log.Fatal(err) | |
} | |
defer dir.Close() | |
dirInfo, err := dir.Stat() | |
if err != nil { | |
log.Fatal(err) | |
} | |
if !dirInfo.IsDir() { | |
err := fmt.Errorf( | |
"\"%v\" no es un directorio", | |
publicDir, | |
) | |
flag.Usage() | |
log.Fatal(err) | |
} | |
} | |
func main() { | |
// publicando el contenido en raíz | |
http.Handle("/", http.FileServer(http.Dir(publicDir))) | |
serverAddress := fmt.Sprintf( | |
"%v:%v", | |
serverHost, | |
serverPort, | |
) | |
// iniciando servidor | |
for { | |
log.Printf( | |
"Iniciando servidor en %v", | |
serverAddress, | |
) | |
fmt.Print("\n -- Presione CTRL+C para terminar --\n") | |
err := http.ListenAndServe( | |
serverAddress, | |
nil, | |
) | |
// si falla imprime el error y reintenta | |
log.Printf( | |
"error ejecutando el servicio [%v], %v", | |
serverAddress, | |
err, | |
) | |
} | |
} |
- Grabado con: ShareX https://getsharex.com/
- Editado con:
- Shotcut https://shotcut.org/
- TikTok https://www.tiktok.com/es/
- Música original: 1 min. late (versión 1 min)