Files
zhub/monitor/monitor.go
lxy b5e55c9869 新增:1、topic 记录到DB 2、http 发布事件支持 3、修复延时事件并发异常崩溃
git-svn-id: svn://47.119.165.148/zhub@127 e63fbceb-bcc3-4977-ac22-735b83d8d0f4
2021-09-02 17:10:21 +00:00

57 lines
1.1 KiB
Go

package monitor
import (
"encoding/json"
"net/http"
"os"
"path"
"zhub/zsub"
)
func StartHttp() {
dir, _ := os.Getwd()
webDir := path.Join(dir, "/public")
http.Handle("/", http.FileServer(http.Dir(webDir)))
http.HandleFunc("/info", info)
http.HandleFunc("/cleanup", cleanup)
http.HandleFunc("/retimer", retimer)
http.HandleFunc("/topic/publish", publish)
http.ListenAndServe(":1217", nil)
}
func publish(w http.ResponseWriter, r *http.Request) {
topic := r.FormValue("topic")
value := r.FormValue("value")
zsub.ZSubx().Publish(topic, value)
renderJson(w, "+ok")
}
func retimer(w http.ResponseWriter, r *http.Request) {
zsub.ZSubx().ReloadTimer()
renderJson(w, "+reload timer ok")
}
func cleanup(w http.ResponseWriter, r *http.Request) {
zsub.ZSubx().Clearup()
renderJson(w, "+OK")
}
func info(w http.ResponseWriter, r *http.Request) {
info := zsub.Info()
renderJson(w, info)
}
func renderJson(w http.ResponseWriter, d interface{}) {
var bytes []byte
if str, ok := d.(string); ok {
bytes = []byte(str)
} else {
bytes, _ = json.Marshal(d)
w.Header().Set("content-type", "application/json; charset=utf-8;")
}
w.Write(bytes)
}