supreme-disco/server/socket.go
2023-05-11 00:43:02 +03:00

42 lines
675 B
Go

package main
import (
"log"
"net"
"os"
)
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()
buf := make([]byte, 512)
for {
n, err := conn.Read(buf)
if err != nil {
return
}
ws.Send <- wsMessage{Message: buf[0:n], Decode: true}
}
}