diff --git a/router-tests/events/kafka_events_test.go b/router-tests/events/kafka_events_test.go index 8e6a7ec52b..9916bfb256 100644 --- a/router-tests/events/kafka_events_test.go +++ b/router-tests/events/kafka_events_test.go @@ -422,6 +422,7 @@ func TestKafkaEvents(t *testing.T) { } assertMultipartPrefix := func(t *testing.T, reader *bufio.Reader) { + assertLineEquals(t, reader, "") assertLineEquals(t, reader, "--graphql") assertLineEquals(t, reader, "Content-Type: application/json") assertLineEquals(t, reader, "") diff --git a/router-tests/events/nats_events_test.go b/router-tests/events/nats_events_test.go index b273e9bccc..e07cd63196 100644 --- a/router-tests/events/nats_events_test.go +++ b/router-tests/events/nats_events_test.go @@ -285,6 +285,7 @@ func TestNatsEvents(t *testing.T) { } assertMultipartPrefix := func(t *testing.T, reader *bufio.Reader) { + assertLineEquals(t, reader, "") assertLineEquals(t, reader, "--graphql") assertLineEquals(t, reader, "Content-Type: application/json") assertLineEquals(t, reader, "") @@ -322,7 +323,7 @@ func TestNatsEvents(t *testing.T) { require.Equal(t, http.StatusOK, resp.StatusCode) defer resp.Body.Close() - require.Equal(t, "application/json", resp.Header.Get("Content-Type")) + require.Equal(t, "multipart/mixed; boundary=graphql", resp.Header.Get("Content-Type")) require.Equal(t, "no-cache", resp.Header.Get("Cache-Control")) require.Equal(t, "no", resp.Header.Get("X-Accel-Buffering")) diff --git a/router/core/flushwriter.go b/router/core/flushwriter.go index 95ca14fb92..b0a5d7f595 100644 --- a/router/core/flushwriter.go +++ b/router/core/flushwriter.go @@ -20,6 +20,7 @@ const ( jsonContent = "application/json" sseMimeType = "text/event-stream" heartbeat = "{}" + multipartContent = multipartMime + "; boundary=" + multipartBoundary ) type HttpFlushWriter struct { @@ -165,7 +166,7 @@ func setSubscriptionHeaders(wgParams SubscriptionParams, r *http.Request, w http } if wgParams.UseMultipart { - w.Header().Set("Content-Type", jsonContent) + w.Header().Set("Content-Type", multipartContent) if r.ProtoMajor == 1 { w.Header().Set("Transfer-Encoding", "chunked") } @@ -206,7 +207,7 @@ func GetWriterPrefix(sse bool, multipart bool) string { if sse { flushBreak = "event: next\ndata: " } else if multipart { - flushBreak = "--" + multipartBoundary + "\nContent-Type: " + jsonContent + "\n\n" + flushBreak = "\r\n--" + multipartBoundary + "\nContent-Type: " + jsonContent + "\r\n\r\n" } return flushBreak