func()

in server-go/main.go [141:174]


func (gs *genaiServer) streamingChatHandler(w http.ResponseWriter, r *http.Request) {
	cr := &chatRequest{}
	if err := parseRequestJSON(r, cr); err != nil {
		http.Error(w, err.Error(), http.StatusBadRequest)
		return
	}

	cs := gs.startChat(cr.History)
	iter := cs.SendMessageStream(gs.ctx, genai.Text(cr.Chat))

	w.Header().Set("Content-Type", "text/event-stream")

	for {
		res, err := iter.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			log.Println(err)
			break
		}

		resTxt, err := responseString(res)
		if err != nil {
			log.Println(err)
			break
		}

		fmt.Fprint(w, resTxt)
		if f, ok := w.(http.Flusher); ok {
			f.Flush()
		}
	}
}