From 27d71da8962930e99c5abfc76fa95554442327b0 Mon Sep 17 00:00:00 2001 From: Simon Eisenmann Date: Thu, 17 Mar 2016 14:58:55 +0100 Subject: [PATCH] Reconnect NATS forever and log NATS connection events. --- src/app/spreed-webrtc-server/bus_manager.go | 4 ++-- src/app/spreed-webrtc-server/nats.go | 21 ++++++++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/app/spreed-webrtc-server/bus_manager.go b/src/app/spreed-webrtc-server/bus_manager.go index 1f70b7c8..367f9b08 100644 --- a/src/app/spreed-webrtc-server/bus_manager.go +++ b/src/app/spreed-webrtc-server/bus_manager.go @@ -72,9 +72,9 @@ func NewBusManager(id string, useNats bool, subjectPrefix string) BusManager { if useNats { b, err = newNatsBus(id, subjectPrefix) if err == nil { - log.Println("Nats bus connected") + log.Println("NATS bus connected") } else { - log.Println("Error connecting nats bus", err) + log.Println("Error connecting NATS bus", err) b = &noopBus{id} } } else { diff --git a/src/app/spreed-webrtc-server/nats.go b/src/app/spreed-webrtc-server/nats.go index 3a18184d..c8caa9b1 100644 --- a/src/app/spreed-webrtc-server/nats.go +++ b/src/app/spreed-webrtc-server/nats.go @@ -20,7 +20,26 @@ var DefaultNatsURL = nats.DefaultURL // and tries to establish the connection. It returns the connection // and any connection error encountered. func NewNatsConnection() (*nats.EncodedConn, error) { - nc, err := nats.Connect(DefaultNatsURL) + opts := &nats.Options{ + Url: DefaultNatsURL, + AllowReconnect: true, + MaxReconnect: -1, // Reconnect forever. + ReconnectWait: nats.DefaultReconnectWait, + Timeout: nats.DefaultTimeout, + PingInterval: nats.DefaultPingInterval, + MaxPingsOut: nats.DefaultMaxPingOut, + SubChanLen: nats.DefaultMaxChanLen, + ClosedCB: func(conn *nats.Conn) { + log.Println("NATS connection closed") + }, + DisconnectedCB: func(conn *nats.Conn) { + log.Println("NATS disconnected") + }, + ReconnectedCB: func(conn *nats.Conn) { + log.Println("NATS reconnected") + }, + } + nc, err := opts.Connect() if err != nil { return nil, err }