txlyre 1 ay önce
ebeveyn
işleme
39734aff96
1 değiştirilmiş dosya ile 20 ekleme ve 29 silme
  1. 20 29
      main.go

+ 20 - 29
main.go

@@ -14,39 +14,35 @@ import (
 	"github.com/gorilla/websocket"
 )
 
-func sender(queue chan []byte, done chan int, secret string) {
+func sender(queue chan []byte, secret string) {
 	log.Println("start sender")
 
-	defer func() {
-		log.Println("sender done")
-
-		done <- 0
-	}()
-
 	h := make(http.Header, 1)
 	h.Set("X-Secret", secret)
 
-	ws, _, err := websocket.DefaultDialer.Dial("wss://yebi.su/ws", h)
-	if err != nil {
-		log.Println("dial error")
-
-		return
-	}
+	for {
+		ws, _, err := websocket.DefaultDialer.Dial("wss://yebi.su/ws", h)
+		if err != nil {
+			log.Println("dial error")
 
-	defer ws.Close()
+			continue
+		}
 
-	log.Println("connected")
+		log.Println("connected")
 
-	for {
-		data := <-queue
+		for {
+			data := <-queue
 
-		log.Printf("sending %db\n", len(data))
+			log.Printf("sending %db\n", len(data))
 
-		if err := ws.WriteMessage(websocket.BinaryMessage, data); err != nil {
-			log.Println("WriteMessage() failed")
+			if err := ws.WriteMessage(websocket.BinaryMessage, data); err != nil {
+				log.Println("WriteMessage() failed")
 
-			break
+				break
+			}
 		}
+
+		ws.Close()
 	}
 }
 
@@ -135,11 +131,10 @@ func main() {
 
 	defer device.Close()
 
-	senderDone := make(chan int, 1)
 	processorQueue := make(chan []byte, bufferSize)
 	senderQueue := make(chan []byte, bufferSize)
 
-	go sender(senderQueue, senderDone, secret)
+	go sender(senderQueue, secret)
 	go processor(processorQueue, senderQueue)
 
 	log.Println("start recording")
@@ -155,11 +150,7 @@ func main() {
 	log.Println("start loop")
 
 	for {
-		select {
-		case <-senderDone:
-			go sender(senderQueue, senderDone, secret)
-		case frame := <-device.GetOutput():
-			processorQueue <- frame
-		}
+		frame := <-device.GetOutput()
+		processorQueue <- frame
 	}
 }