Class: Rage::SSE::Message
- Inherits:
-
Struct
- Object
- Struct
- Rage::SSE::Message
- Defined in:
- lib/rage/sse/message.rb
Overview
Represents a single Server-Sent Event. This class allows you to define the id, event, and retry fields for an SSE message.
Instance Attribute Summary collapse
-
#data ⇒ String, #to_json
The
datafield for the SSE event. -
#event ⇒ String
The
eventfield for the SSE event. -
#id ⇒ String
The
idfield for the SSE event. -
#retry ⇒ Integer
The
retryfield for the SSE event, in milliseconds.
Instance Method Summary collapse
Instance Attribute Details
#data ⇒ String, #to_json
Returns The data field for the SSE event. If the object provided is not a string, it will be serialized to JSON.
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/rage/sse/message.rb', line 13 Rage::SSE::Message = Struct.new(:id, :event, :retry, :data, keyword_init: true) do def to_s data_entry = if !data.is_a?(String) "data: #{data.to_json}\n" elsif data.include?("\n") data.split("\n").map { |d| "data: #{d}\n" }.join else "data: #{data}\n" end "#{data_entry}#{"id: #{id}\n" if id}#{"event: #{event}\n" if event}#{"retry: #{self.retry.to_i}\n" if self.retry && self.retry.to_i > 0}\n" end end |
#event ⇒ String
Returns The event field for the SSE event. This can be used to define custom event types.
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/rage/sse/message.rb', line 13 Rage::SSE::Message = Struct.new(:id, :event, :retry, :data, keyword_init: true) do def to_s data_entry = if !data.is_a?(String) "data: #{data.to_json}\n" elsif data.include?("\n") data.split("\n").map { |d| "data: #{d}\n" }.join else "data: #{data}\n" end "#{data_entry}#{"id: #{id}\n" if id}#{"event: #{event}\n" if event}#{"retry: #{self.retry.to_i}\n" if self.retry && self.retry.to_i > 0}\n" end end |
#id ⇒ String
Returns The id field for the SSE event. This can be used to track messages.
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/rage/sse/message.rb', line 13 Rage::SSE::Message = Struct.new(:id, :event, :retry, :data, keyword_init: true) do def to_s data_entry = if !data.is_a?(String) "data: #{data.to_json}\n" elsif data.include?("\n") data.split("\n").map { |d| "data: #{d}\n" }.join else "data: #{data}\n" end "#{data_entry}#{"id: #{id}\n" if id}#{"event: #{event}\n" if event}#{"retry: #{self.retry.to_i}\n" if self.retry && self.retry.to_i > 0}\n" end end |
#retry ⇒ Integer
Returns The retry field for the SSE event, in milliseconds. This value is a suggestion for the client about how long to wait before reconnecting.
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/rage/sse/message.rb', line 13 Rage::SSE::Message = Struct.new(:id, :event, :retry, :data, keyword_init: true) do def to_s data_entry = if !data.is_a?(String) "data: #{data.to_json}\n" elsif data.include?("\n") data.split("\n").map { |d| "data: #{d}\n" }.join else "data: #{data}\n" end "#{data_entry}#{"id: #{id}\n" if id}#{"event: #{event}\n" if event}#{"retry: #{self.retry.to_i}\n" if self.retry && self.retry.to_i > 0}\n" end end |
Instance Method Details
#to_s ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/rage/sse/message.rb', line 14 def to_s data_entry = if !data.is_a?(String) "data: #{data.to_json}\n" elsif data.include?("\n") data.split("\n").map { |d| "data: #{d}\n" }.join else "data: #{data}\n" end "#{data_entry}#{"id: #{id}\n" if id}#{"event: #{event}\n" if event}#{"retry: #{self.retry.to_i}\n" if self.retry && self.retry.to_i > 0}\n" end |