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