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: The quickest way how to run lobby on your server is this:
```shell ```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 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 chmod +x /usr/local/bin/lobbyctl
# Update NATS_URL and LABELS here # 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()) return c.String(http.StatusBadRequest, err.Error())
} }
// Update the other nodes with this new change
sendDiscoveryPacket()
return c.String(http.StatusOK, "OK") return c.String(http.StatusOK, "OK")
} }
@ -84,5 +87,8 @@ func deleteLabelsHandler(c echo.Context) error {
return c.String(http.StatusBadRequest, err.Error()) return c.String(http.StatusBadRequest, err.Error())
} }
// Update the other nodes with this new change
sendDiscoveryPacket()
return c.String(http.StatusOK, "OK") return c.String(http.StatusOK, "OK")
} }

View File

@ -24,6 +24,7 @@ var localHost server.LocalHost
var config Config var config Config
var shuttingDown bool var shuttingDown bool
var sendDiscoveryPacketTrigger chan bool = make(chan bool)
func init() { func init() {
// Load config from environment variables // 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() { func sendDiscoveryPacket() {
for { sendDiscoveryPacketTrigger <- true
discovery, err := localHost.GetIdentification() }
if err != nil {
log.Printf("sending discovery identification error: %v\n", err)
}
err = driver.SendDiscoveryPacket(discovery) // sendDisoveryPacket sends discovery packet to the driver which passes it to the
if err != nil { // other nodes. By this it propagates any change that happens in the local discovery struct.
log.Println(err) // 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 { if shuttingDown {
break break
@ -145,7 +157,21 @@ func main() {
// If config.Register is false this instance won't be registered with other nodes // If config.Register is false this instance won't be registered with other nodes
if config.Register { 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 { } else {
log.Println("standalone mode, I won't register myself") log.Println("standalone mode, I won't register myself")
} }