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