Files
MWClash/core/server.go
chen08209 2f9dc02436 Support override script
Support proxies search

Support svg display

Add some scenes auto close connections

Update core

Optimize more details
2025-06-02 15:37:08 +08:00

82 lines
1.1 KiB
Go

//go:build !cgo
package main
import (
"bufio"
"encoding/json"
"fmt"
"net"
"strconv"
)
var conn net.Conn
func (result ActionResult) send() {
data, err := result.Json()
if err != nil {
return
}
send(data)
}
func sendMessage(message Message) {
result := ActionResult{
Method: messageMethod,
Data: message,
}
result.send()
}
func send(data []byte) {
if conn == nil {
return
}
_, _ = conn.Write(append(data, []byte("\n")...))
}
func startServer(arg string) {
_, err := strconv.Atoi(arg)
if err != nil {
conn, err = net.Dial("unix", arg)
} else {
conn, err = net.Dial("tcp", fmt.Sprintf("127.0.0.1:%s", arg))
}
if err != nil {
panic(err.Error())
}
defer func(conn net.Conn) {
_ = conn.Close()
}(conn)
reader := bufio.NewReader(conn)
for {
data, err := reader.ReadString('\n')
if err != nil {
return
}
var action = &Action{}
err = json.Unmarshal([]byte(data), action)
if err != nil {
return
}
result := ActionResult{
Id: action.Id,
Method: action.Method,
}
go handleAction(action, result)
}
}
func nextHandle(action *Action, result ActionResult) bool {
return false
}