From bc1e89280e44233fe5f0e4b1732783b847359a44 Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Thu, 26 Dec 2024 13:58:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=A7=86=E9=A2=91=E6=B5=81?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handler/device.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/handler/device.go b/handler/device.go index 76eda44..4248b4b 100644 --- a/handler/device.go +++ b/handler/device.go @@ -361,6 +361,7 @@ func VideoFeed(c *gin.Context) { // 创建一个通道用于接收客户端连接关闭的信号 clientClosed := make(chan struct{}) + defer close(clientClosed) c.Stream(func(w io.Writer) bool { // 将读取 Redis 消息通道的逻辑放在这里,方便根据返回值控制循环 ch := pubSub.Channel() @@ -384,22 +385,22 @@ func VideoFeed(c *gin.Context) { _, err = w.Write([]byte("--frame\r\n")) if err != nil { fmt.Println("write video frame error:", err) - continue + return false } _, err = w.Write([]byte("Content-Type: image/jpeg\r\n\r\n")) if err != nil { fmt.Println("write video frame error:", err) - continue + return false } _, err = w.Write(buf) if err != nil { fmt.Println("write video frame error:", err) - continue + return false } _, err = w.Write([]byte("\r\n")) if err != nil { fmt.Println("write video frame error:", err) - continue + return false } case <-clientClosed: // 当接收到客户端关闭连接的信号,返回 false 停止发送视频流