Prechádzať zdrojové kódy

feat(http):优化服务端流式响应头设置逻辑

- 有set过就使用set的
- 没set则使用默认的
lihf 2 mesiacov pred
rodič
commit
c6b42efb66

+ 14 - 6
transport/http/handler/server_stream_handler.go

@@ -84,6 +84,19 @@ func (s *serverStream) SendHeader(md metadata.MD) error {
 		return err
 	}
 
+	// 没有指定响应头则设置默认响应头
+	if s.metadata.Len() == 0 {
+		err := s.SetHeader(metadata.MD{
+			"Content-Type":      []string{"text/event-stream"},
+			"Cache-Control":     []string{"no-cache"},
+			"Connection":        []string{"keep-alive"},
+			"X-Accel-Buffering": []string{"no"},
+		})
+		if err != nil {
+			return err
+		}
+	}
+
 	for k, v := range s.metadata {
 		if len(v) == 0 {
 			continue
@@ -104,12 +117,7 @@ func (s *serverStream) Context() context.Context {
 func (s *serverStream) SendMsg(m interface{}) error {
 	if !s.isSendHeader {
 		// 设置流式响应 headers
-		err := s.SendHeader(metadata.MD{
-			"Content-Type":      []string{"text/event-stream"},
-			"Cache-Control":     []string{"no-cache"},
-			"Connection":        []string{"keep-alive"},
-			"X-Accel-Buffering": []string{"no"},
-		})
+		err := s.SendHeader(nil)
 		if err != nil {
 			return err
 		}