Files

73 lines
1.8 KiB
Go

package main
import (
"log"
"time"
)
const WEBSOCKET_SERVER = "ws://youtube-download-ws-server.site.quack-lab.dev/ws"
const WEBSOCKET_SERVER_ALT = "ws://localhost:8080/ws"
func main() {
log.SetFlags(log.Lmicroseconds)
// res, err := http.Get(FULL_URL)
// if err != nil {
// log.Fatal(err)
// }
// defer res.Body.Close()
// body, err := io.ReadAll(res.Body)
// if err != nil {
// log.Printf("Error reading response body: %+v\n", err)
// return
// }
// if res.StatusCode != http.StatusOK {
// log.Printf("Non-OK HTTP status: %d\nResponse body: %s\n", res.StatusCode, body)
// return
// }
// var data APIResponse
// err = json.Unmarshal(body, &data)
// if err != nil {
// log.Printf("Error unmarshaling JSON: %+v\n", err)
// return
// }
// log.Printf("Data: %+v\n", data)
// listener := new(RealtimeListener)
// listener.Url = POCKETBASE_REALTIME
// listener.Collections = []string{COLLECTION_NAME}
// listener.initialize()
ws := new(WSConnection)
ws.url = WEBSOCKET_SERVER
ws.Open()
sem := make(chan struct{}, 4)
for {
select {
case event := <-ws.ReadChan:
eventCopy := event
status := make(chan error)
sem <- struct{}{}
log.Printf("New event: %+v; semaphore at: %d", eventCopy, len(sem))
go func() {
defer func() {
<-sem
log.Printf("Semaphore at: %d", len(sem))
}()
// Download(eventCopy, status)
DownloadURL(eventCopy, status)
// go DownloadNative(event, status)
for status := range status {
log.Printf("Status: %s\n", status)
}
}()
case <-time.After(1 * time.Minute):
// Perform some action or simply continue to avoid deadlock
log.Println("Consumer is alive, but has no new events.")
}
}
}