50 lines
862 B
Go
50 lines
862 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
"time"
|
|
|
|
"git.company.lan/gopkg/recws"
|
|
)
|
|
|
|
func main() {
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
ws := recws.RecConn{
|
|
KeepAliveTimeout: 10 * time.Second,
|
|
}
|
|
ws.Dial("wss://echo.websocket.org", nil)
|
|
|
|
go func() {
|
|
time.Sleep(2 * time.Second)
|
|
cancel()
|
|
}()
|
|
|
|
for {
|
|
select {
|
|
case <-ctx.Done():
|
|
go ws.Close()
|
|
log.Printf("Websocket closed %s", ws.GetURL())
|
|
return
|
|
default:
|
|
if !ws.IsConnected() {
|
|
log.Printf("Websocket disconnected %s", ws.GetURL())
|
|
continue
|
|
}
|
|
|
|
if err := ws.WriteMessage(1, []byte("Incoming")); err != nil {
|
|
log.Printf("Error: WriteMessage %s", ws.GetURL())
|
|
return
|
|
}
|
|
|
|
_, message, err := ws.ReadMessage()
|
|
if err != nil {
|
|
log.Printf("Error: ReadMessage %s", ws.GetURL())
|
|
return
|
|
}
|
|
|
|
log.Printf("Success: %s", message)
|
|
}
|
|
}
|
|
}
|