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) 

但是,当我试图击中端点时,它只是发现并没有响应。 有人使用了流功能,以便他/她可以指出我可能正在做的错误。谢谢!

2017-06-29 kunalag

+0

找出问题所在。在SSEvent之后,返回true将使流函数继续运行,通过通道完成后,需要在流关闭后返回false。 –

+0

但现在的问题是,直到时间流功能运行,调用者不会获得任何流数据,它只有在c.Stream函数完成后才会获取。 –