golangでgin-gonicサーバーを使用して1つのストリーミングAPIを作成したかったのです。golangにgin-gonicサーバーを使用してストリームAPIを書き込む方法は?試したc.Streamの作業が無かった
func StreamData(c *gin.Context) {
chanStream := make(chan int, 10)
go func() {for i := 0; i < 5; i++ {
chanStream <- i
time.Sleep(time.Second * 1)
}}()
c.Stream(func(w io.Writer) bool {
c.SSEvent("message", <-chanStream)
return true
})
}
router.GET("/stream", controller.StreamData)
しかし、私がエンドポイントにヒットしようとすると、ちょうど突っ込んでしまい、応答がありません。 誰かが私がやっている間違いを指摘できるように、ストリーム機能を使用しましたか?ありがとう!
問題を解明しました。 SSEventの後、trueを返すと、ストリーム関数が実行中になり、チャネルを介した通信が完了した後、ストリームが閉じられた後にfalseを返す必要があります。 – kunalag
しかし、問題は、タイムストリーム関数が実行されるまで、呼び出し元はストリームデータを取得できず、c.Stream関数が完了した後にのみ取得されるということです。 – kunalag