commit 13de439291f9284d7faba3d59ce534db79d5dc1d
parent 441fc0e62f070a4b3b47bf8f707b33361049d5b5
Author: Natasha Kerensikova <natgh@instinctive.eu>
Date: Mon, 16 Jun 2025 19:00:16 +0000
NATS connection status changes are output on IRC
Diffstat:
M | main.go | | | 27 | +++++++++++++++++++++++++-- |
1 file changed, 25 insertions(+), 2 deletions(-)
diff --git a/main.go b/main.go
@@ -146,12 +146,17 @@ func NewNatsIM(configPath string) (*NatsIM, error) {
natsim.cmdQueue = make(chan command, 10)
natsim.ircQueue = make(chan string, 10)
- opt, err := nats.NkeyOptionFromSeed(natsim.Nats.NkeySeed)
+ optSeed, err := nats.NkeyOptionFromSeed(natsim.Nats.NkeySeed)
if err != nil {
return nil, err
}
- natsim.nc, err = nats.Connect(natsim.Nats.Server, opt)
+ natsim.nc, err = nats.Connect(natsim.Nats.Server,
+ optSeed,
+ nats.ConnectHandler(natsim.natsConnected),
+ nats.DisconnectErrHandler(natsim.natsDisconnected),
+ nats.ReconnectHandler(natsim.natsReconnected),
+ nats.ReconnectErrHandler(natsim.natsReconnectErr))
if err != nil {
return nil, err
}
@@ -340,6 +345,16 @@ func (natsim *NatsIM) ircSplit(s string) []string {
/**************** Nats Callbacks ****************/
+func (natsim *NatsIM) natsConnected(c *nats.Conn) {
+ natsim.ircSend("Connected to " + c.ConnectedUrlRedacted())
+}
+
+func (natsim *NatsIM) natsDisconnected(c *nats.Conn, err error) {
+ if err != nil {
+ natsim.ircSendError("Disconnected", err)
+ }
+}
+
func (natsim *NatsIM) natsReceive(m *nats.Msg) {
if !IsKept(m.Subject, m.Data, natsim.Nats.Filter, true) {
return
@@ -349,6 +364,14 @@ func (natsim *NatsIM) natsReceive(m *nats.Msg) {
natsim.ircSend(msg)
}
+func (natsim *NatsIM) natsReconnected(c *nats.Conn) {
+ natsim.ircSend("Reconnected to " + c.ConnectedUrlRedacted())
+}
+
+func (natsim *NatsIM) natsReconnectErr(c *nats.Conn, err error) {
+ natsim.ircSendError("Reconnect", err)
+}
+
/**************** Filters ****************/
type FilterElement struct {