Sha256: 8de051e8273edcd99b5ebc8a2b644919899b3b7bd7d89d04ba9be107798abe75

Contents?: true

Size: 945 Bytes

Versions: 1

Compression:

Stored size: 945 Bytes

Contents

class Nodectl::Stream::EventsSession
  @manager = Nodectl::Manager.new(self)

  attr_reader :websocket
  attr_reader :file

  def initialize(websocket, handshake)
    @websocket = websocket
    @handshake = handshake

    self.class[self.class.next_id] = self
  end

  def publish(resource, id, event_name, payload = {})
    message = MultiJson.dump({resource:   resource,
                              id:         id,
                              event_name: event_name,
                              payload:    payload})

    @websocket.send(message)

    Nodectl.logger.debug("events_session: sent 'message'")
  end

  def close
    self.class.delete(self)
    @websocket.close unless @websocket.closed?
  end

  def onclose(&block)
    @websocket.onclose(&block)
  end

  class << self
    def publish(resource, id, event_name, payload = {})
      all.each { |session| session.publish(resource, id, event_name, payload) }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nodectl-0.2.4 lib/nodectl/stream/events_session.rb