Class: Jugglite::SseConnection
- Inherits:
-
Object
- Object
- Jugglite::SseConnection
- Defined in:
- lib/jugglite/sse_connection.rb
Instance Attribute Summary collapse
-
#body ⇒ Object
readonly
Returns the value of attribute body.
-
#request ⇒ Object
readonly
Returns the value of attribute request.
Instance Method Summary collapse
- #callback(&block) ⇒ Object
- #close ⇒ Object
- #comment(comment) ⇒ Object
- #errback(&block) ⇒ Object
-
#initialize(request) ⇒ SseConnection
constructor
A new instance of SseConnection.
- #keepalive(extra = nil) ⇒ Object
- #longpolling? ⇒ Boolean
- #write(message, options = {}) ⇒ Object
Constructor Details
#initialize(request) ⇒ SseConnection
Returns a new instance of SseConnection.
5 6 7 8 9 |
# File 'lib/jugglite/sse_connection.rb', line 5 def initialize(request) @request = request @longpolling = request.xhr? @body = DeferrableBody.new end |
Instance Attribute Details
#body ⇒ Object (readonly)
Returns the value of attribute body.
3 4 5 |
# File 'lib/jugglite/sse_connection.rb', line 3 def body @body end |
#request ⇒ Object (readonly)
Returns the value of attribute request.
3 4 5 |
# File 'lib/jugglite/sse_connection.rb', line 3 def request @request end |
Instance Method Details
#callback(&block) ⇒ Object
36 37 38 |
# File 'lib/jugglite/sse_connection.rb', line 36 def callback(&block) @body.callback(&block) end |
#close ⇒ Object
32 33 34 |
# File 'lib/jugglite/sse_connection.rb', line 32 def close @body.succeed end |
#comment(comment) ⇒ Object
28 29 30 |
# File 'lib/jugglite/sse_connection.rb', line 28 def comment(comment) @body.write(": #{comment}\n") end |
#errback(&block) ⇒ Object
40 41 42 |
# File 'lib/jugglite/sse_connection.rb', line 40 def errback(&block) @body.errback(&block) end |
#keepalive(extra = nil) ⇒ Object
23 24 25 26 |
# File 'lib/jugglite/sse_connection.rb', line 23 def keepalive(extra=nil) # From http://dev.w3.org/html5/eventsource/#notes comment("keepalive #{extra}") end |
#longpolling? ⇒ Boolean
11 12 13 |
# File 'lib/jugglite/sse_connection.rb', line 11 def longpolling? @longpolling end |
#write(message, options = {}) ⇒ Object
15 16 17 18 19 20 21 |
# File 'lib/jugglite/sse_connection.rb', line 15 def write(, = {}) reset_timeout if longpolling? buffer = "" .each { |k, v| buffer << "#{k}: #{v}\n" } .each_line { |line| buffer << "data: #{line.strip}\n" } @body.write(buffer << "\n") end |