接收端
-
请求体按Method、Url、Header、Body排序。
-
需要用
channel
来作为超时判断时,直接把内容也通过channel
传递,因为已经有了消耗,而且用全局变量会导致超时后协程中执行成功,改变全局变量的值。cmd := exec.Command("/bin/sh", "-c", reqParam.Arg) cmdResult := make(chan cmdOutput, 1) go func() { cmdData, cmdErr := cmd.CombinedOutput() output := cmdOutput{ data: cmdData, err: cmdErr} cmdResult <- output }() select { case result := <-cmdResult: repData = result.data e = result.err case <-time.After(time.Duration(10 * time.Second)): e = fmt.Errorf("run shell overtime") cmd.Process.Kill() }
服务端
transport 支持 unix socket
type roundTripFunc func(req *http.Requ