优化httpserver

This commit is contained in:
boyce
2019-01-28 11:31:17 +08:00
parent 5bac2dc314
commit 0b97b5f68a
4 changed files with 42 additions and 18 deletions

View File

@@ -3,14 +3,24 @@ package network
import (
"fmt"
"net/http"
"time"
)
type HttpServer struct {
port uint16
handler http.Handler
readtimeout time.Duration
writetimeout time.Duration
httpserver *http.Server
}
func (slf *HttpServer) Init(port uint16) {
func (slf *HttpServer) Init(port uint16, handler http.Handler, readtimeout time.Duration, writetimeout time.Duration) {
slf.port = port
slf.handler = handler
slf.readtimeout = readtimeout
slf.writetimeout = writetimeout
}
func (slf *HttpServer) HandleFunc(pattern string, handler func(http.ResponseWriter, *http.Request)) {
@@ -23,7 +33,16 @@ func (slf *HttpServer) Start() {
func (slf *HttpServer) startListen() error {
listenPort := fmt.Sprintf(":%d", slf.port)
err := http.ListenAndServe(listenPort, nil)
slf.httpserver = &http.Server{
Addr: listenPort,
Handler: slf.handler,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
MaxHeaderBytes: 1 << 20,
}
err := slf.httpserver.ListenAndServe()
if err != nil {
fmt.Printf("http.ListenAndServe(%d, nil) error\n", slf.port)
}