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))
		}
	}
}

image

posted on 2025-08-28 22:32  王景迁  阅读(13)  评论(0)    收藏  举报

导航