Как в golang корректно обработать http запрос используя сокеты?

Я использую SetReadDeadline для задания максимального времени ожидания, но приходится ждать указанное время прежде чем сервер начнет отвечать. Как сделать правильно? P.s. новичок в golang, в сокетах тоже.

  9 func main() {                                                                                                                                                                                                    
 10     if len(os.Args) != 3 {
 11         fmt.Println("No host/port specified")
 12         fmt.Println("Expected: [host] [port]")
 13     }
 14 
 15     host := os.Args[1]
 16     port := os.Args[2]
 17 
 18     listener, _ := net.Listen(
 19         "tcp",
 20         host + ":" + port,
 21     )
 22 
 23     for {
 24         c, e := listener.Accept()
 25         t := time.Now().Add(time.Second * 5)
 26         c.SetReadDeadline(t)
 27 
 28         if e != nil { continue }
 29         go handle(c)
 30     }
 31 }
 
 33 func handle(c net.Conn) {
 34     defer c.Close()
 35     fmt.Println("Handled")
 36 
 37     buffer := make([]byte, 1024, 1024)
 38     request := make([]byte, 0, 2048)
 39 
 40     for {
 41         l, e := c.Read(buffer)
 42         if e != nil { break }
 43         if l == 0 { break }
 44         request = append(request, buffer...)
 45         // fmt.Println(l)
 46         // fmt.Print(string(buffer))
 47     }
 48 
 49     fmt.Println(string(request))
 50     response := getResponse(string(request))
 51     c.Write([]byte(response))
 52 }

Ответы (0 шт):