更新:1、依赖升级

2、module 名称地址
This commit is contained in:
2025-10-06 00:46:51 +08:00
parent 978a268f93
commit 44d4fcdbc4
11 changed files with 402 additions and 325 deletions

View File

@@ -3,19 +3,17 @@ package cmd
import (
"bufio"
"encoding/json"
"fmt"
"github.com/go-basic/uuid"
"io"
"unicode/utf8"
//"github.com/go-basic/uuid"
"log"
"net"
"os"
"strconv"
"strings"
"sync"
"time"
"github.com/go-basic/uuid"
)
type ZHubClient struct {
@@ -289,7 +287,11 @@ func (r Rpc) backTopic() string {
return strings.Split(r.Ruk, "::")[0]
}
func (c ZHubClient) Rpc(topic string, message string, back func(res RpcResult)) {
func (c *ZHubClient) Rpc(topic string, message string, back func(res RpcResult)) {
c.RpcWithTimeout(topic, message, time.Second*15, back)
}
func (c *ZHubClient) RpcWithTimeout(topic string, message string, timeout time.Duration, back func(res RpcResult)) {
rpc := Rpc{
Ruk: c.appname + "::" + uuid.New(),
Topic: topic,
@@ -310,7 +312,7 @@ func (c ZHubClient) Rpc(topic string, message string, back func(res RpcResult))
select {
case <-rpc.Ch:
// ch 事件rpc 返回)
case <-time.After(time.Second * 15):
case <-time.After(timeout):
// rpc 超时
x, _ := json.Marshal(rpc)
log.Println("rpc timeout:", x)
@@ -323,7 +325,7 @@ func (c ZHubClient) Rpc(topic string, message string, back func(res RpcResult))
}
// RpcSubscribe rpc subscribe
func (c ZHubClient) RpcSubscribe(topic string, fun func(Rpc Rpc) RpcResult) {
func (c *ZHubClient) RpcSubscribe(topic string, fun func(Rpc Rpc) RpcResult) {
c.Subscribe(topic, func(v string) {
rpc := Rpc{}
err := json.Unmarshal([]byte(v), &rpc)
@@ -449,118 +451,3 @@ func (c *ZHubClient) receive() {
}
}
}
// -------------------------------------- hm --------------------------------------
// ==============================================================================
var reconnect = 0
// ClientRun client 命令行程序
func ClientRun(addr string) {
conn, err := net.Dial("tcp", fmt.Sprintf("%s", addr))
for {
if err != nil {
log.Println(err)
time.Sleep(time.Second * 3)
conn, err = net.Dial("tcp", fmt.Sprintf("%s", addr))
continue
}
fmt.Println(fmt.Sprintf("had connected server: %s", addr))
break
}
defer func() {
if reconnect == 1 {
conn.Close()
ClientRun(addr)
}
}()
go clientRead(conn)
for {
inReader := bufio.NewReader(os.Stdin)
line, err := inReader.ReadString('\n')
if err != nil {
fmt.Println(err)
return
} else if reconnect == 1 {
return
}
line = strings.Trim(line, "\r\n")
line = strings.Trim(line, "\n")
line = strings.Trim(line, " ")
if strings.EqualFold(line, "") {
continue
} else if strings.EqualFold(line, ":exit") {
fmt.Println("exit!")
return
}
//fmt.Println("发送数据:" + line)
line = strings.ReplaceAll(line, " ", "")
parr := strings.Split(line, " ")
conn.Write([]byte("*" + strconv.Itoa(len(parr)) + "\r\n"))
for i := range parr {
conn.Write([]byte("$" + strconv.Itoa(len(parr[i])) + "\r\n"))
conn.Write([]byte(parr[i] + "\r\n"))
}
}
}
func clientRead(conn net.Conn) {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered:", r)
}
reconnect = 1
}()
reader := bufio.NewReader(conn)
for {
rcmd := make([]string, 0)
line, _, err := reader.ReadLine()
if err != nil {
log.Println("connection error: ", err)
return
} else if len(line) == 0 {
continue
}
switch string(line[:1]) {
case "*":
n, _ := strconv.Atoi(string(line[1:]))
for i := 0; i < n; i++ {
reader.ReadLine()
v, _, _ := reader.ReadLine()
rcmd = append(rcmd, string(v))
}
case "+":
rcmd = append(rcmd, string(line))
case "-":
rcmd = append(rcmd, string(line))
case ":":
rcmd = append(rcmd, string(line))
case "h":
if strings.EqualFold(string(line), "help-start") {
for {
v, _, _ := reader.ReadLine()
if strings.EqualFold(string(v), "help-end") {
break
}
rcmd = append(rcmd, string(v)+"\r\n")
}
}
default:
rcmd = append(rcmd, string(line))
}
fmt.Println(">", strings.Join(rcmd, " "))
}
}