This commit is contained in:
parent
697df68640
commit
0354fe3255
@ -155,5 +155,8 @@ func RegisterRoutes(e *echo.Echo, ctx *context.Context, cfg *config.Config) {
|
|||||||
return Result(c, err, disc)
|
return Result(c, err, disc)
|
||||||
})
|
})
|
||||||
e.File("/test.html", "/home/paul/test.html")
|
e.File("/test.html", "/home/paul/test.html")
|
||||||
e.GET("/ws", ws.HandleWS)
|
e.GET("/ws", func(c echo.Context) (err error) {
|
||||||
|
ws.HandleWS(c, cfg)
|
||||||
|
return
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
@ -18,32 +18,54 @@ func Init(cfg *config.Config) {
|
|||||||
LISTENERS = make(map[string]*websocket.Conn)
|
LISTENERS = make(map[string]*websocket.Conn)
|
||||||
}
|
}
|
||||||
|
|
||||||
func HandleWS(c echo.Context) error {
|
func HandleWS(c echo.Context, cfg *config.Config) error {
|
||||||
websocket.Handler(func(ws *websocket.Conn) {
|
websocket.Handler(func(ws *websocket.Conn) {
|
||||||
defer ws.Close()
|
defer ws.Close()
|
||||||
|
|
||||||
fmt.Printf("rr: %v\n", ws)
|
var lastip string
|
||||||
|
|
||||||
for {
|
for {
|
||||||
|
var apievent = models.APIEvent{}
|
||||||
|
var event = models.Event{}
|
||||||
|
|
||||||
// Read
|
// Read
|
||||||
var event models.APIEvent
|
|
||||||
var msg []byte
|
var msg []byte
|
||||||
err := websocket.Message.Receive(ws, &msg)
|
err := websocket.Message.Receive(ws, &msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err = json.Unmarshal(msg, &event)
|
err = json.Unmarshal(msg, &apievent)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
if event.MsgType == "bootstrap" {
|
|
||||||
LISTENERS[event.Hostname] = ws
|
if apievent.IPData.IP != "" && apievent.IPData.IP == lastip {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
switch apievent.MsgType {
|
||||||
|
case "bootstrap":
|
||||||
|
LISTENERS[apievent.Hostname] = ws
|
||||||
|
fmt.Println(LISTENERS)
|
||||||
|
case "add":
|
||||||
|
session := cfg.Db.NewSession()
|
||||||
|
event.APIParse(session, apievent)
|
||||||
|
session.Close()
|
||||||
|
|
||||||
|
err := event.Insert(cfg)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
log.Printf("zmq: Inserted event")
|
||||||
|
case "file":
|
||||||
|
apievent.MsgType = "ws"
|
||||||
}
|
}
|
||||||
fmt.Println(LISTENERS)
|
|
||||||
|
|
||||||
// Write
|
// Write
|
||||||
err = websocket.Message.Send(ws, "OK")
|
err = websocket.Message.Send(ws, "OK_sendtest")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
gcconn(ws)
|
||||||
|
fmt.Println(LISTENERS)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,3 +73,12 @@ func HandleWS(c echo.Context) error {
|
|||||||
}).ServeHTTP(c.Response(), c.Request())
|
}).ServeHTTP(c.Response(), c.Request())
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func gcconn(conn *websocket.Conn) (err error) {
|
||||||
|
for i, v := range LISTENERS {
|
||||||
|
if v == conn {
|
||||||
|
delete(LISTENERS, i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user