86 lines
1.6 KiB
Go
86 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")
|
|
}
|