diff --git a/client/client.go b/client/client.go index c9c3d94..b3bab33 100644 --- a/client/client.go +++ b/client/client.go @@ -3,19 +3,38 @@ package main import ( "net" "time" + "fmt" ) var echoSocket = make(chan []byte) func startSocket() { + + var( + err error + conn net.Conn + ) + for { select { case b := <-echoSocket: - conn, err := net.Dial("unix", "/tmp/echo.sock") - if err == nil { - conn.Write(b) - conn.Close() + + if conn == nil { + conn, err = net.Dial("unix", "/tmp/echo.sock") + if err != nil { + fmt.Println(err.Error()) + continue + } } + + if conn != nil { + if _, err = conn.Write(b); err != nil { + fmt.Println(err.Error()) + conn.Close() + conn = nil + } + } + } } } @@ -24,8 +43,8 @@ func main() { go startSocket() for { - echoSocket <- []byte(`{"chanel":"stripchat","room":"naughtyobsessions","donator":"tbone6893","amount":333}`) - echoSocket <- []byte(`{"chanel":"stripchat","index":28}`) + echoSocket <- []byte(`{"chanel":"chaturbate","room":"naughtyobsessions","donator":"tbone6893","amount":333}`) + echoSocket <- []byte(`{"chanel":"chaturbate","index":28}`) time.Sleep(1e9) } } diff --git a/server/socket.go b/server/socket.go index 0d910e3..5fdc740 100644 --- a/server/socket.go +++ b/server/socket.go @@ -1,9 +1,12 @@ package main import ( + "fmt" "log" "net" "os" + "io" + jsoniter "github.com/json-iterator/go" ) func removeSocket(s string) { @@ -31,12 +34,17 @@ func startSocket() { func socketHandler(conn net.Conn) { defer conn.Close() - buf := make([]byte, 512) + d := json.NewDecoder(conn) for { - n, err := conn.Read(buf) - if err != nil { - return + raw := jsoniter.RawMessage{} + err := d.Decode(&raw) + if err == io.EOF { + fmt.Println("break:", err.Error()) + break + } else if err != nil { + fmt.Println("json error:", err.Error()) + continue } - ws.Send <- wsMessage{Message: buf[0:n], Decode: true} + ws.Send <- wsMessage{Message: raw, Decode: true} } }