通道未在第一个 API 请求上发送数据

通道未在第一个 api 请求上发送数据

问题内容

我有一个 SSE 端点,它将数据发送到前端,并且该数据是从另一个 API 端点检索的。我对 go 中的 channels 仍然很陌生,似乎我必须触发 API 端点两次,以便 SSE 端点将数据发送到前端。就目前而言,我还没有编写前端代码来建立 SSE 连接,因为我仍在使用通道。有人可以解释为什么这需要调用 API 两次才能让 SSE 发送数据吗?

上交所路线

func SendSSE(appCtx *fiber.Ctx, dataChannel chan string) error {    appCtx.Set("Content-Type", "text/event-stream")    appCtx.Set("Cache-Control", "no-cache")    appCtx.Set("Connection", "keep-alive")    appCtx.Set("Transfer-Encoding", "chunked")    appCtx.Context().SetBodyStreamWriter(fasthttp.StreamWriter(func(w *bufio.Writer) {        log.Println("SSE Opened")        for {            log.Println("Retrieving data channel..")            fmt.Fprintf(w, "data: Message: %s", 

向sse发送数据的API

func GetApiData(appCtx *fiber.Ctx, dataChannel chan string) error {    log.Println("Sending DataChannel data")    dataChannel 

正确答案


您看到此情况的原因是您在此部分中使用了 2 条消息

fmt.Fprintf(w, "data: Message: %s", 

每条奇数消息都会发送到 SSE,每条偶数消息都会记录到控制台。应改为

message := 

登录后复制

以上就是通道未在第一个 API 请求上发送数据的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2360813.html

(0)
上一篇 2025年3月1日 18:22:17
下一篇 2025年3月1日 18:22:33

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论