Compare commits

...

2 Commits

Author SHA1 Message Date
8493c7cb40
Send discovery packet every time a new label is added 2021-09-09 18:25:22 +02:00
a0abda5196
README update 2021-09-07 14:12:29 +02:00
3 changed files with 45 additions and 13 deletions

View File

@ -52,9 +52,9 @@ Support for NATS is only less than 150 lines.
The quickest way how to run lobby on your server is this:
```shell
wget -O /usr/local/bin/lobbyd https://github.com/by-cx/lobby/releases/download/v1.0/lobbyd-1.0-linux-amd64
wget -O /usr/local/bin/lobbyd https://github.com/by-cx/lobby/releases/download/v1.1/lobbyd-1.1-linux-amd64
chmod +x /usr/local/bin/lobbyd
wget -O /usr/local/bin/lobbyctl https://github.com/by-cx/lobby/releases/download/v1.0/lobbyctl-1.0-linux-amd64
wget -O /usr/local/bin/lobbyctl https://github.com/by-cx/lobby/releases/download/v1.1/lobbyctl-1.1-linux-amd64
chmod +x /usr/local/bin/lobbyctl
# Update NATS_URL and LABELS here

View File

@ -63,6 +63,9 @@ func addLabelsHandler(c echo.Context) error {
return c.String(http.StatusBadRequest, err.Error())
}
// Update the other nodes with this new change
sendDiscoveryPacket()
return c.String(http.StatusOK, "OK")
}
@ -84,5 +87,8 @@ func deleteLabelsHandler(c echo.Context) error {
return c.String(http.StatusBadRequest, err.Error())
}
// Update the other nodes with this new change
sendDiscoveryPacket()
return c.String(http.StatusOK, "OK")
}

View File

@ -24,6 +24,7 @@ var localHost server.LocalHost
var config Config
var shuttingDown bool
var sendDiscoveryPacketTrigger chan bool = make(chan bool)
func init() {
// Load config from environment variables
@ -88,19 +89,30 @@ func sendGoodbyePacket() {
}
}
// sendDisoveryPacket sends discovery packet regularly so the network know we exist
// sendDiscoveryPacket sends a single discovery packet out
func sendDiscoveryPacket() {
for {
discovery, err := localHost.GetIdentification()
if err != nil {
log.Printf("sending discovery identification error: %v\n", err)
}
sendDiscoveryPacketTrigger <- true
}
err = driver.SendDiscoveryPacket(discovery)
if err != nil {
log.Println(err)
// sendDisoveryPacket sends discovery packet to the driver which passes it to the
// other nodes. By this it propagates any change that happens in the local discovery struct.
// Every tune trigger is triggered it sends one message.
func sendDiscoveryPacketTask(trigger chan bool) {
for {
// We are waiting for the trigger
<-trigger
if !shuttingDown {
discovery, err := localHost.GetIdentification()
if err != nil {
log.Println("sending discovery identification error: %v", err)
}
err = driver.SendDiscoveryPacket(discovery)
if err != nil {
log.Println(err.Error())
}
}
time.Sleep(time.Duration(config.KeepAlive) * time.Second)
if shuttingDown {
break
@ -145,7 +157,21 @@ func main() {
// If config.Register is false this instance won't be registered with other nodes
if config.Register {
go sendDiscoveryPacket()
// This is background process that sends the message
go sendDiscoveryPacketTask(sendDiscoveryPacketTrigger)
// This triggers the process
go func() {
for {
sendDiscoveryPacket()
time.Sleep(time.Duration(config.KeepAlive) * time.Second)
if shuttingDown {
break
}
}
}()
} else {
log.Println("standalone mode, I won't register myself")
}