Class: Upkeep::Delivery::ActionCableAdapter
- Inherits:
-
Object
- Object
- Upkeep::Delivery::ActionCableAdapter
- Defined in:
- lib/upkeep/delivery/action_cable_adapter.rb
Constant Summary collapse
- STREAM_PREFIX =
"upkeep:subscriber"
Class Method Summary collapse
Instance Method Summary collapse
- #deliver(envelope) ⇒ Object
-
#initialize(server: default_server) ⇒ ActionCableAdapter
constructor
A new instance of ActionCableAdapter.
Constructor Details
#initialize(server: default_server) ⇒ ActionCableAdapter
Returns a new instance of ActionCableAdapter.
15 16 17 |
# File 'lib/upkeep/delivery/action_cable_adapter.rb', line 15 def initialize(server: default_server) @server = server end |
Class Method Details
.stream_name_for(subscriber_id) ⇒ Object
11 12 13 |
# File 'lib/upkeep/delivery/action_cable_adapter.rb', line 11 def self.stream_name_for(subscriber_id) "#{STREAM_PREFIX}:#{Digest::SHA256.hexdigest(subscriber_id.to_s)[0, 32]}" end |
Instance Method Details
#deliver(envelope) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/upkeep/delivery/action_cable_adapter.rb', line 19 def deliver(envelope) stream_name = envelope.stream_name || self.class.stream_name_for(envelope.subscriber_id) payload = { subscriber_id: envelope.subscriber_id, stream_name: stream_name, envelope_digest: Transport.envelope_digest(envelope), bytesize: envelope.body.bytesize } ActiveSupport::Notifications.instrument("deliver.upkeep", payload) do server.broadcast(stream_name, envelope.body) end end |