|
@@ -84,6 +84,19 @@ func (s *serverStream) SendHeader(md metadata.MD) error {
|
|
|
return err
|
|
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 {
|
|
for k, v := range s.metadata {
|
|
|
if len(v) == 0 {
|
|
if len(v) == 0 {
|
|
|
continue
|
|
continue
|
|
@@ -104,12 +117,7 @@ func (s *serverStream) Context() context.Context {
|
|
|
func (s *serverStream) SendMsg(m interface{}) error {
|
|
func (s *serverStream) SendMsg(m interface{}) error {
|
|
|
if !s.isSendHeader {
|
|
if !s.isSendHeader {
|
|
|
// 设置流式响应 headers
|
|
// 设置流式响应 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 {
|
|
if err != nil {
|
|
|
return err
|
|
return err
|
|
|
}
|
|
}
|