class AnyCable::BroadcastAdapters::Nats

AnyCable.broadcast_adapter = :nats, servers: “nats://my_nats:4242”, channel: “any_cable
You can override these params:
by default.
It uses NATS configuration from global AnyCable config
AnyCable.broadcast_adapter = :nats
Example:
NATS adapter for broadcasting.

def announce!

def announce!
  logger.info "Broadcasting NATS channel: #{channel}"
end

def initialize(

def initialize(
  channel: AnyCable.config.nats_channel,
  **options
)
  options = AnyCable.config.to_nats_params.merge(options)
  @nats_conn = ::NATS.connect(nil, options)
  setup_listeners(nats_conn)
  @channel = channel
end

def raw_broadcast(payload)

def raw_broadcast(payload)
  nats_conn.publish(channel, payload)
end

def setup_listeners(nats_client)

def setup_listeners(nats_client)
  nats_client.on_disconnect { logger.info "NATS client disconnected" }
  nats_client.on_reconnect do
    info = nats_client.server_info
    logger.info "NATS client reconnected: host=#{info[:host]}:#{info[:port]} cluster=#{info[:cluster]}"
  end
  nats_client.on_error do |err|
    logger.warn "NATS client error: #{err.message}"
  end
end