修改:简化工程包结构

git-svn-id: svn://47.119.165.148/zhub@132 e63fbceb-bcc3-4977-ac22-735b83d8d0f4
This commit is contained in:
lxy
2021-11-04 10:57:50 +00:00
parent a254269684
commit 7ca71eb838
10 changed files with 150 additions and 201 deletions

View File

@@ -1,157 +0,0 @@
package main
import (
"fmt"
"log"
"strconv"
"testing"
"time"
"zhub/cli"
)
var (
//addr = "47.111.150.118:6066"
addr = "127.0.0.1:1216"
//addr = "122.112.180.156:6066"
//addr = "39.108.56.246:1216"
)
func TestCli(t *testing.T) {
//client, err := cli.Create("39.108.56.246:7070", "")
client, err := cli.Create(addr, "xx")
//client, err := cli.Create(addr, "topic-x")
if err != nil {
log.Fatal(err)
}
// 订阅主题 消息
client.Subscribe("ax", func(v string) {
log.Println("收到主题 ax 消息 " + v)
})
// 定时调度
client.Timer("a", func() {
log.Println("收到 a 定时消息")
})
client.Subscribe("a", func(v string) {
log.Println("收到主题 a 消息 " + v)
})
client.Delay("a", "x", 3000)
time.Sleep(time.Hour * 3)
}
func TestTimer(t *testing.T) {
go func() {
client, _ := cli.Create(addr, "topic-1")
client.Subscribe("ax1", func(v string) {
log.Println("topic-1-ax: " + v)
})
}()
go func() {
client, _ := cli.Create(addr, "topic-1")
client.Subscribe("ax1", func(v string) {
log.Println("topic-2-ax: " + v)
})
}()
go func() {
client, _ := cli.Create(addr, "topic-1")
client.Subscribe("ax1", func(v string) {
log.Println("topic-3-ax: " + v)
})
}()
/*go func() {
client, _ := cli.Create(addr, "topic-1")
client.Subscribe("ax", func(v string) {
log.Println("topic-4-ax: " + v)
})
}()
go func() {
client, _ := cli.Create(addr, "topic-1")
client.Subscribe("ax", func(v string) {
log.Println("topic-5-ax: " + v)
})
}()*/
/*go func() {
client, _ := cli.Create(addr, "topic-2")
client.Timer("a", func() {
log.Println("client-2 收到 a 的定时消息")
})
}()
go func() {
client, _ := cli.Create(addr, "topic-3")
client.Timer("c", func() {
log.Println("client-2 收到 c 的定时消息")
})
client.Timer("b", func() {
log.Println("client-2 收到 b 的定时消息")
})
client.Timer("LOAD-LIVE-ROOM-UNBANNED", func() {
log.Println("client-2 收到 LOAD-LIVE-ROOM-UNBANNED 的定时消息")
})
client.Timer("VIP-EXP-EXPIRE", func() {
log.Println("client-2 收到 VIP-EXP-EXPIRE 的定时消息")
})
}()*/
time.Sleep(time.Hour * 3)
}
func TestSendCmd(t *testing.T) {
client, err := cli.Create(addr, "group-admin")
if err != nil {
log.Println(err)
}
//client.Cmd("reload-timer")
client.Cmd("shutdown")
}
func TestPublish(t *testing.T) {
client, err := cli.Create(addr, "")
if err != nil {
log.Println(err)
}
for i := 0; i < 10000; i++ {
client.Publish("ax1", strconv.Itoa(i))
}
time.Sleep(time.Second)
}
func TestLock(t *testing.T) {
client, _ := cli.Create(addr, "xx")
client.Subscribe("lock", func(v string) {
})
var fun = func(x string) {
log.Println("lock", time.Now().UnixNano()/1e6)
lock := client.Lock("a", 30)
defer client.Unlock(lock)
//client.Lock("a", 5)
for i := 0; i < 5; i++ {
time.Sleep(time.Second * 1)
fmt.Println(x + ":" + strconv.Itoa(i+1))
}
}
go fun("x")
go fun("y")
go fun("z")
time.Sleep(time.Second * 30 * 10)
}

View File

@@ -1,4 +1,4 @@
package cli package cmd
import ( import (
"bufio" "bufio"

View File

@@ -5,9 +5,7 @@ import (
"os" "os"
"strings" "strings"
"time" "time"
"zhub/cli" "zhub/cmd"
"zhub/conf"
"zhub/monitor"
"zhub/zsub" "zhub/zsub"
) )
@@ -25,13 +23,13 @@ func main() {
confPath = arg[3:] confPath = arg[3:]
} }
} }
conf.Load(confPath) zsub.LoadConf(confPath)
if len(addr) == 0 { if len(addr) == 0 {
addr = conf.GetStr("service.zhub.servers", "127.0.0.1:1216") addr = zsub.GetStr("service.zhub.servers", "127.0.0.1:1216")
} }
if len(os.Args) == 3 && strings.EqualFold(os.Args[1], "-r") { if len(os.Args) == 3 && strings.EqualFold(os.Args[1], "-r") {
if cli, err := cli.Create(addr, "group-admin"); err != nil { if cli, err := cmd.Create(addr, "group-admin"); err != nil {
log.Println(err) log.Println(err)
} else { } else {
switch os.Args[2] { switch os.Args[2] {
@@ -47,10 +45,10 @@ func main() {
} }
if server { if server {
go monitor.StartHttp() go zsub.StartHttp()
zsub.ServerStart(addr) // 服务进程启动 zsub.ServerStart(addr) // 服务进程启动
} else { } else {
cli.ClientRun(addr) cmd.ClientRun(addr)
} }
} }

View File

@@ -2,9 +2,120 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Title</title> <title>ZHub</title>
<link rel="stylesheet" href="http://rep.1216.top/repo/zui-dist/css/zui.css">
<link href="http://meta.1216.top/res/css/zui-theme.css" rel="stylesheet">
<style type="text/css">
body {
text-align: center;
}
.panel {
padding-left: 0;
padding-right: 0;
}
.board {
width: 100%;
}
.board-success {
background-color: #ddf4df;
color: #329d38;
}
.board-danger {
background-color: #ffe5e0;
color: #e75033;
}
.board-item {
width: 50%;
float: left;
}
.center-block {
width:100%;
height:50px;
position:absolute;
top:100%;
margin-top:-50px;
}
</style>
</head> </head>
<body style="text-align: center;padding: 10px"> <body style="text-align: center;padding: 10px">
<h2>welcome zhub!</h2> <h1 class="">welcome zhub!</h1>
<div class="example">
<a class="label">Topic: 698</a>
<span class="label label-primary">Timer: 65</span>
<span class="label label-success">Conns: 45</span>
<span class="label label-info">Lock: 12/1122</span>
<span class="label label-warning">Delay: 12/3000</span>
<!--<span class="label label-danger">Danger</span>-->
</div>
<hr>
<div class="col-md-12">
<ul class="nav nav-secondary nav-justified">
<li class="active"><a data-tab href="#Issues"><b>Issues</b> </a></li>
<li><a data-tab href="#Topic"><b>Topic</b></a></li>
<li><a data-tab href="#Timer"><b>Timer</b> </a></li>
<li><a data-tab href="#Conns"><b>Conns</b> </a></li>
<li><a data-tab href="#Lock"><b>Lock</b> </a></li>
<li><a data-tab href="#Delay"><b>Delay</b> </a></li>
<li><a data-tab href="#Releases"><b>Releases</b> </a></li>
<li><a data-tab href="#Releases"><b>Q&A</b> </a></li>
<li><a data-tab href="#Releases"><b>Docs</b> </a></li>
</ul>
<div class="tab-content pull-left">
<div class="tab-pane active" id="Issues">
Issues
</div>
<div class="tab-pane" id="Topic">
Topic
</div>
<div class="tab-pane" id="Timer">
Timer
</div>
<div class="tab-pane" id="Conns">
Conns
</div>
<div class="tab-pane" id="Lock">
Lock
</div>
<div class="tab-pane" id="Delay">
Delay
</div>
<div class="tab-pane" id="Releases">
Releases
</div>
</div>
<br>
<br>
</div>
<H6 class="center-block">
<div>
<a href="#" title="ZHub">ZHub</a>
<br>
<a href="index.html" title="开发者工具">Dev-Kit</a> |
<a href="https://gitee.com/tc608/JKit" target="_blank" title="Excel处理">JKit</a> |
<a href="http://meta.1216.top" target="_blank" title="元数据引擎">Meta-Kit</a> |
<a href="https://gitee.com/tc608/redtimer" target="_blank" title="徒手编写,精简时间调度">Red-timer</a> |
<a href="https://www.1216.top" target="_blank" title="redkale 实现论坛博客系统">Redbbs</a> |
<a href="https://gitee.com/tc608/jfly" target="_blank" title="jfinal 实现论坛博客系统">JFly</a>
</div>
<br>
© TCCN <span href="">京ICP备16065761号</span>
<br>
<br>
</H6>
<script src="http://meta.1216.top/res/zui/lib/jquery/jquery.js" defer></script>
<script src="http://meta.1216.top/res/zui/js/zui.js" defer></script>
</body> </body>
</html> </html>

View File

@@ -1,4 +1,4 @@
package conf package zsub
import ( import (
"bufio" "bufio"
@@ -15,7 +15,7 @@ var (
DataDir = "" DataDir = ""
) )
func Load(path string) { func LoadConf(path string) {
f, err := os.Open(path) f, err := os.Open(path)
if err != nil { if err != nil {
log.Panicln(err) log.Panicln(err)

View File

@@ -1,13 +1,17 @@
package monitor package zsub
import ( import (
"encoding/json" "encoding/json"
"net/http" "net/http"
"os" "os"
"path" "path"
"zhub/zsub"
) )
func init() {
// 1.日志文件 定期分割归档
}
func StartHttp() { func StartHttp() {
dir, _ := os.Getwd() dir, _ := os.Getwd()
webDir := path.Join(dir, "/public") webDir := path.Join(dir, "/public")
@@ -24,22 +28,23 @@ func StartHttp() {
func publish(w http.ResponseWriter, r *http.Request) { func publish(w http.ResponseWriter, r *http.Request) {
topic := r.FormValue("topic") topic := r.FormValue("topic")
value := r.FormValue("value") value := r.FormValue("value")
zsub.ZSubx().Publish(topic, value) zsub.Publish(topic, value)
renderJson(w, "+ok") renderJson(w, "+ok")
} }
// retimer 重载定时调度
func retimer(w http.ResponseWriter, r *http.Request) { func retimer(w http.ResponseWriter, r *http.Request) {
zsub.ZSubx().ReloadTimer() zsub.ReloadTimer()
renderJson(w, "+reload timer ok") renderJson(w, "+reload timer ok")
} }
func cleanup(w http.ResponseWriter, r *http.Request) { func cleanup(w http.ResponseWriter, r *http.Request) {
zsub.ZSubx().Clearup() zsub.Clearup()
renderJson(w, "+OK") renderJson(w, "+OK")
} }
func info(w http.ResponseWriter, r *http.Request) { func info(w http.ResponseWriter, r *http.Request) {
info := zsub.Info() info := Info()
renderJson(w, info) renderJson(w, info)
} }

View File

@@ -6,7 +6,6 @@ import (
"strconv" "strconv"
"strings" "strings"
"time" "time"
"zhub/conf"
) )
var funChan = make(chan func(), 1000) var funChan = make(chan func(), 1000)
@@ -30,7 +29,7 @@ func msgAccept(v Message) {
return return
} }
if conf.LogDebug { if LogDebug {
log.Println("[", v.Conn.sn, "] rcmd: "+strings.Join(rcmd, " ")) log.Println("[", v.Conn.sn, "] rcmd: "+strings.Join(rcmd, " "))
} }

View File

@@ -10,7 +10,6 @@ import (
"strings" "strings"
"sync/atomic" "sync/atomic"
"time" "time"
"zhub/conf"
) )
var ( var (
@@ -50,11 +49,11 @@ func (s *ZSub) dataStorage() {
s.delayup = false s.delayup = false
}() }()
err := os.Remove(conf.DataDir + "/delay.z") err := os.Remove(DataDir + "/delay.z")
if err != nil { if err != nil {
log.Println(err) log.Println(err)
} }
file, err := os.OpenFile(conf.DataDir+"/delay.z", os.O_CREATE|os.O_WRONLY, os.ModeAppend) file, err := os.OpenFile(DataDir+"/delay.z", os.O_CREATE|os.O_WRONLY, os.ModeAppend)
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
} }
@@ -75,7 +74,7 @@ func (s *ZSub) dataStorage() {
// ========================== lock save =========================== // ========================== lock save ===========================
func() { func() {
err := os.Remove(conf.DataDir + "/lock.z") err := os.Remove(DataDir + "/lock.z")
if err != nil { if err != nil {
log.Println(err) log.Println(err)
} }
@@ -86,12 +85,12 @@ func (s *ZSub) dataStorage() {
break // 只记录获得锁的记录 break // 只记录获得锁的记录
} }
} }
Append(str, conf.DataDir+"/lock.z") Append(str, DataDir+"/lock.z")
}() }()
} }
func (s *ZSub) loadDelay() { func (s *ZSub) loadDelay() {
f, err := os.Open(conf.DataDir + "/delay.z") f, err := os.Open(DataDir + "/delay.z")
if err != nil { if err != nil {
return return
} }
@@ -126,7 +125,7 @@ func (s *ZSub) loadDelay() {
} }
func (s *ZSub) loadLock() { func (s *ZSub) loadLock() {
f, err := os.Open(conf.DataDir + "/lock.z") f, err := os.Open(DataDir + "/lock.z")
if err != nil { if err != nil {
return return
} }
@@ -172,12 +171,12 @@ var (
) )
func init() { func init() {
conf.Load("app.conf") LoadConf("app.conf")
_db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8", _db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8",
conf.GetStr("ztimer.db.user", "root"), GetStr("ztimer.db.user", "root"),
conf.GetStr("ztimer.db.pwd", "123456"), GetStr("ztimer.db.pwd", "123456"),
conf.GetStr("ztimer.db.addr", "127.0.0.1:3306"), GetStr("ztimer.db.addr", "127.0.0.1:3306"),
conf.GetStr("ztimer.db.database", "zhub"), GetStr("ztimer.db.database", "zhub"),
)) ))
if err != nil { if err != nil {
log.Println(err) log.Println(err)

View File

@@ -12,7 +12,6 @@ import (
"sync/atomic" "sync/atomic"
"time" "time"
"unicode/utf8" "unicode/utf8"
"zhub/conf"
) )
var ( var (
@@ -251,7 +250,7 @@ ServerStart
2、init server 2、init server
*/ */
func ServerStart(addr string) { func ServerStart(addr string) {
conf.GetStr("data.dir", "data") GetStr("data.dir", "data")
go func() { go func() {
for { for {
@@ -523,7 +522,3 @@ func (s *ZSub) noSubscribe(topic string) bool {
} }
return true return true
} }
func ZSubx() *ZSub {
return zsub
}

View File

@@ -13,7 +13,6 @@ import (
"strings" "strings"
"text/template" "text/template"
"time" "time"
"zhub/conf"
) )
type ZTimer struct { type ZTimer struct {
@@ -167,10 +166,10 @@ func executeShell(command string) (string, error, string) {
func (s *ZSub) ReloadTimer() { func (s *ZSub) ReloadTimer() {
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8", db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8",
conf.GetStr("ztimer.db.user", "root"), GetStr("ztimer.db.user", "root"),
conf.GetStr("ztimer.db.pwd", "123456"), GetStr("ztimer.db.pwd", "123456"),
conf.GetStr("ztimer.db.addr", "127.0.0.1:3306"), GetStr("ztimer.db.addr", "127.0.0.1:3306"),
conf.GetStr("ztimer.db.database", "zhub"), GetStr("ztimer.db.database", "zhub"),
)) ))
if err != nil { if err != nil {