Ruby on Rails 5.2 - ActionController::Live::SSE

क्लास एक्शनकंट्रोलर :: लाइव :: एसएसई




ruby

क्लास एक्शनकंट्रोलर :: लाइव :: एसएसई

जनक:
Object

यह वर्ग एक IO स्ट्रीम को SSE (सर्वर सेंटेड इवेंट) लिखने की क्षमता प्रदान करता है। वर्ग को एक धारा के साथ आरंभीकृत किया जाता है और इसका उपयोग या तो JSON स्ट्रिंग या ऑब्जेक्ट लिखने के लिए किया जा सकता है जिसे JSON में परिवर्तित किया जा सकता है।

ऑब्जेक्ट लिखना यह आपके द्वारा कॉन्फ़िगर किए गए विकल्पों में से मानक SSE प्रारूप में परिवर्तित हो जाएगा। आप निम्नलिखित विकल्पों को सेट करने के लिए चुन सकते हैं:

1) Event. If specified, an event with this name will be dispatched on
the browser.
2) Retry. The reconnection time in milliseconds used when attempting
to send the event.
3) Id. If the connection dies while sending an SSE to the browser, then
the server will receive a +Last-Event-ID+ header with value equal to +id+.

SSE ऑब्जेक्ट के कंस्ट्रक्टर में एक विकल्प सेट करने के बाद, स्ट्रीम में भेजे गए सभी भविष्य के SSE उन विकल्पों का उपयोग करेंगे जब तक कि ओवरराइड नहीं किया जाता है।

उदाहरण उपयोग:

class MyController < ActionController::Base
  include ActionController::Live

  def index
    response.headers['Content-Type'] = 'text/event-stream'
    sse = SSE.new(response.stream, retry: 300, event: "event-name")
    sse.write({ name: 'John'})
    sse.write({ name: 'John'}, id: 10)
    sse.write({ name: 'John'}, id: 10, event: "other-event")
    sse.write({ name: 'John'}, id: 10, event: "other-event", retry: 500)
  ensure
    sse.close
  end
end

नोट: SSE वर्तमान में IE द्वारा समर्थित नहीं हैं। हालांकि, वे क्रोम, फ़ायरफ़ॉक्स, ओपेरा और सफारी द्वारा समर्थित हैं।

स्थिरांक

WHITELISTED_OPTIONS

पब्लिक क्लास के तरीके

नया (स्ट्रीम, विकल्प = {}) स्रोत दिखाएं
# File actionpack/lib/action_controller/metal/live.rb, line 91
def initialize(stream, options = {})
  @stream = stream
  @options = options
end

सार्वजनिक प्रवृत्ति के तरीके

# File actionpack/lib/action_controller/metal/live.rb, line 96
def close
  @stream.close
end
लिखना (वस्तु, विकल्प = {}) स्रोत दिखाएँ
# File actionpack/lib/action_controller/metal/live.rb, line 100
def write(object, options = {})
  case object
  when String
    perform_write(object, options)
  else
    perform_write(ActiveSupport::JSON.encode(object), options)
  end
end