Compare commits
	
		
			2 commits
		
	
	
		
			58495d59c1
			...
			8493c7cb40
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8493c7cb40 | |||
| a0abda5196 | 
					 3 changed files with 45 additions and 13 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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")
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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() {
 | 
			
		||||
	sendDiscoveryPacketTrigger <- true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 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.Printf("sending discovery identification error: %v\n", err)
 | 
			
		||||
				log.Println("sending discovery identification error: %v", err)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			err = driver.SendDiscoveryPacket(discovery)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
			log.Println(err)
 | 
			
		||||
				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")
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue