supreme-disco/server/socket.go

51 lines
873 B
Go
Raw Normal View History

2023-05-11 00:43:02 +03:00
package main
import (
2023-05-13 00:18:52 +03:00
"fmt"
2023-05-11 00:43:02 +03:00
"log"
"net"
"os"
2023-05-13 00:18:52 +03:00
"io"
jsoniter "github.com/json-iterator/go"
2023-05-11 00:43:02 +03:00
)
func removeSocket(s string) {
if _, err := os.Stat(s); err == nil {
os.Remove(s)
}
}
func startSocket() {
const SOCK = "/tmp/echo.sock"
removeSocket(SOCK)
listener, err := net.Listen("unix", SOCK)
if err != nil {
log.Fatal("Listen (echo socket): ", err)
}
defer listener.Close()
for {
conn, err := listener.Accept()
if err != nil {
log.Fatal("accept error:", err)
}
go socketHandler(conn)
}
}
func socketHandler(conn net.Conn) {
defer conn.Close()
2023-05-13 00:18:52 +03:00
d := json.NewDecoder(conn)
2023-05-11 00:43:02 +03:00
for {
2023-05-13 00:18:52 +03:00
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
2023-05-11 00:43:02 +03:00
}
2023-05-13 00:18:52 +03:00
ws.Send <- wsMessage{Message: raw, Decode: true}
2023-05-11 00:43:02 +03:00
}
}