go http实现长连接
服务端
package main
import (
"net/http"
"time"
)
func handler(w http.ResponseWriter, r *http.Request) {
f := w.(http.Flusher)
for {
w.Write([]byte("1\n"))
// 把数据立即发送给客户端
f.Flush()
time.Sleep(time.Second)
}
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":80", nil)
}
客户端
package main
import (
"bufio"
"fmt"
"net/http"
)
func main() {
get, err := http.Get("http://127.0.0.1:80")
if err != nil {
fmt.Println(err)
return
}
reader := bufio.NewReader(get.Body)
for {
if line, _, err := reader.ReadLine(); err != nil {
fmt.Println(err)
return
} else {
fmt.Println(string(line))
}
}
}