Class: Rage::SSE::Message

Inherits:
Struct
  • Object
show all
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

Instance Method Summary collapse

Instance Attribute Details

#dataString, #to_json

Returns The data field for the SSE event. If the object provided is not a string, it will be serialized to JSON.

Returns:

  • (String, #to_json)

    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

#eventString

Returns The event field for the SSE event. This can be used to define custom event types.

Returns:

  • (String)

    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

#idString

Returns The id field for the SSE event. This can be used to track messages.

Returns:

  • (String)

    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

#retryInteger

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.

Returns:

  • (Integer)

    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_sObject



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