From d202ae73f934d616cc7f6701505ff1c3d950c550 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20de=20Metz?= Date: Thu, 1 Sep 2011 18:44:35 +0200 Subject: [PATCH] Ignore empty message. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: François de Metz --- lib/em-eventsource.rb | 11 +++++++---- spec/em-eventsource_spec.rb | 11 +++++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/em-eventsource.rb b/lib/em-eventsource.rb index 7ef8cea..ac15bdc 100644 --- a/lib/em-eventsource.rb +++ b/lib/em-eventsource.rb @@ -123,11 +123,12 @@ def listen end def handle_stream(stream) - event = [] + data = "" name = nil stream.split("\n").each do |part| /^data:(.+)$/.match(part) do |m| - event << m[1].strip + data += m[1].strip + data += "\n" end /^id:(.+)$/.match(part) do |m| @last_event_id = m[1].strip @@ -141,10 +142,12 @@ def handle_stream(stream) end end end + return if data.empty? + data.chomp!("\n") if name.nil? - @messages.each { |message| message.call(event.join("\n")) } + @messages.each { |message| message.call(data) } else - @on[name].each { |message| message.call(event.join("\n")) } if not @on[name].nil? + @on[name].each { |message| message.call(data) } if not @on[name].nil? end end diff --git a/spec/em-eventsource_spec.rb b/spec/em-eventsource_spec.rb index 417aad7..b725407 100755 --- a/spec/em-eventsource_spec.rb +++ b/spec/em-eventsource_spec.rb @@ -112,6 +112,17 @@ def create_response_headers(status, content_type="", other={}) end end + it "ignore empty message" do + start_source do |source, req| + source.message do |message| + message.must_equal "hello world" + EM.stop + end + req.stream_data(":\n\n") + req.stream_data("data: hello world\n\n") + end + end + it "handle event name" do start_source do |source, req| source.on "plop" do |message|