|
@@ -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
|
|
|
}
|
|
|
}
|