Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge pull request #15070 from ayamomiji/sse-patch

Add multiple lines message support for SSE module
  • Loading branch information...
commit 125cc780c534b836f5443259991307e88b92ad1e 2 parents 09cfa3f + 7a84f0b
@tenderlove tenderlove authored
View
3  actionpack/lib/action_controller/metal/live.rb
@@ -102,7 +102,8 @@ def perform_write(json, options)
end
end
- @stream.write "data: #{json}\n\n"
+ message = json.gsub("\n", "\ndata: ")
+ @stream.write "data: #{message}\n\n"
end
end
View
16 actionpack/test/controller/live_stream_test.rb
@@ -39,6 +39,13 @@ def sse_with_id
ensure
sse.close
end
+
+ def sse_with_multiple_line_message
+ sse = SSE.new(response.stream)
+ sse.write("first line.\nsecond line.")
+ ensure
+ sse.close
+ end
end
tests SSETestController
@@ -87,6 +94,15 @@ def test_sse_with_id
assert_match(/data: {\"name\":\"Ryan\"}/, second_response)
assert_match(/id: 2/, second_response)
end
+
+ def test_sse_with_multiple_line_message
+ get :sse_with_multiple_line_message
+
+ wait_for_response_stream_close
+ first_response, second_response = response.body.split("\n")
+ assert_match(/data: first line/, first_response)
+ assert_match(/data: second line/, second_response)
+ end
end
class LiveStreamTest < ActionController::TestCase
Please sign in to comment.
Something went wrong with that request. Please try again.