func publish()

in pubsub/src/main.go [41:78]


func publish(g Groups) {
	rdb := redis.NewClient(&redis.Options{
		Addr: os.Getenv("REDIS_URL") + ":" + port,
		//Password: password,
	})
	sess := session.Must(session.NewSession(&aws.Config{Region: aws.String(os.Getenv("AWS_REGION"))}))
	svc := gamelift.New(sess)
	result, err := rdb.Ping().Result()
	if err != nil {
		log.Fatal("Could not establish a connection to Redis:", err)
	}
	log.Println("Established connection to Redis:", result)

	for {
		for _, gs := range g.GameServerGroups {
			params := &gamelift.DescribeGameServerInstancesInput{
				GameServerGroupName: &gs,
			}
			log.Println("Game server group", gs, "instance status")
			pageNum := 0
			err = svc.DescribeGameServerInstancesPages(params,
				func(page *gamelift.DescribeGameServerInstancesOutput, lastPage bool) bool {
					pageNum++
					for _, obj := range page.GameServerInstances {
						b, _ := json.Marshal(obj)
						log.Println(*obj.InstanceId, string(b))
						err := rdb.Publish(*obj.InstanceId, string(b)).Err()
						if err != nil {
							log.Println("An error occurred publishing data to Redis:", err)
						}
					}
					return pageNum <= len(page.GameServerInstances)
				},
			)
		}
		time.Sleep(time.Second * 60)
	}
}