supreme-disco/server/socket.go

52 lines
845 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-07-01 17:17:28 +03:00
"io"
2023-05-11 00:43:02 +03:00
"log"
"net"
"os"
2023-07-06 16:24:14 +03:00
2023-07-03 22:53:36 +03:00
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-07-02 02:54:24 +03:00
ws.Broadcast <- raw
2023-05-11 00:43:02 +03:00
}
}