Files
cmp-go-snippet/cmpSnipper/cmpSnipperHttpServ.go
2024-01-26 07:11:35 +12:00

85 lines
1.6 KiB
Go

package cmpSnipper
import (
"net"
"net/http"
)
type tcpKeepAliveListener struct {
*net.TCPListener
}
type cmpSnipperHttpServ struct {
HttpListener net.Listener
}
func (app *App) HttpServStart() error {
var err error;
// var subjHttpPortString string = "7070";
// var subjHttpPortUint16 uint16 = subjConf.Http.Port;
host, err := app.ConfGetStr("http", "host")
// fmt.Printf("Success load : %+v\n", host)
if err != nil {
app.Log(err)
return err
}
port, err := app.ConfGetStr("http", "port")
// fmt.Printf("Success load : %+v\n", port)
if err != nil {
app.Log(err)
return err
}
// if subjHttpPortUint16 == 0 || subjHttpPortString != strconv.FormatUint(uint64(subjHttpPortUint16), 10) {
// fmt.Printf("Invalid http.port %s != %d\n", subjHttpPortString, subjHttpPortUint16)
// app.Log(".Fatal");
// }
httpFileServer := http.FileServer(http.Dir("static"))
http.Handle("/go-prefix/static/", http.StripPrefix("/go-prefix/static/", httpFileServer))
http.HandleFunc("/" , app.HttpReq);
http.HandleFunc("/go-prefix/ws" , app.HttpWebSockHand)
var addr = host + ":" + port
server := &http.Server{Addr: addr}
app.Log("Listenning: '%s'", port);
app.cmpSnipperHttpServ.HttpListener, err = net.Listen("tcp", addr)
// defer app.HttpServClose()
if err != nil {
app.Log(err)
return err
}
go func() {
err = server.Serve(tcpKeepAliveListener{app.cmpSnipperHttpServ.HttpListener.(*net.TCPListener)})
if err == nil {
app.Log(err)
return // err
}
}()
return nil
}
func (app *App) HttpServStop() {
app.cmpSnipperHttpServ.HttpListener.Close()
app.Log("Server Closed")
}