108 lines
3.7 KiB
Go
108 lines
3.7 KiB
Go
|
package plane
|
|||
|
|
|||
|
import (
|
|||
|
"context"
|
|||
|
"fmt"
|
|||
|
"github.com/gogf/gf/v2/frame/g"
|
|||
|
"github.com/gogf/gf/v2/net/ghttp"
|
|||
|
"github.com/tiger1103/gfast/v3/third/plane/globe"
|
|||
|
)
|
|||
|
|
|||
|
type Progerss_putter_close_Req struct {
|
|||
|
g.Meta `path:"progress/putter_close" summary:"推杆闭合进度" method:"get" tags:"无人机进度数据相关(ws)"`
|
|||
|
}
|
|||
|
|
|||
|
func (receiver PLANE) Progerss_putter_close(ctx context.Context, req *Progerss_putter_close_Req) (res *UsualRes, err error) {
|
|||
|
return save_ws(ctx, &globe.WS_Progress_putter_close_map)
|
|||
|
}
|
|||
|
|
|||
|
type Progerss_putter_open_Req struct {
|
|||
|
g.Meta `path:"progress/putter_open" summary:"推杆展开进度" method:"get" tags:"无人机进度数据相关(ws)"`
|
|||
|
}
|
|||
|
|
|||
|
func (receiver PLANE) Progerss_putter_open(ctx context.Context, req *Progerss_putter_open_Req) (res *UsualRes, err error) {
|
|||
|
return save_ws(ctx, &globe.WS_Progress_putter_open_map)
|
|||
|
}
|
|||
|
|
|||
|
type Progerss_Reply_Req struct {
|
|||
|
g.Meta `path:"progress/err_reply" summary:"up回复错误状态" method:"get" tags:"无人机进度数据相关(ws)"`
|
|||
|
}
|
|||
|
|
|||
|
func (receiver PLANE) Progerss_Reply(ctx context.Context, req *Progerss_Reply_Req) (res *UsualRes, err error) {
|
|||
|
return save_ws(ctx, &globe.WS_Reply)
|
|||
|
}
|
|||
|
|
|||
|
type Progerss_device_reboot_Req struct {
|
|||
|
g.Meta `path:"progress/device_reboot" summary:"机库重启进度推送" method:"get" tags:"无人机进度数据相关(ws)"`
|
|||
|
}
|
|||
|
|
|||
|
func (receiver PLANE) Progerss_device_reboot(ctx context.Context, req *Progerss_device_reboot_Req) (res *UsualRes, err error) {
|
|||
|
return save_ws(ctx, &globe.WS_Progress_device_reboot_map)
|
|||
|
}
|
|||
|
|
|||
|
type Progerss_cover_close_Req struct {
|
|||
|
g.Meta `path:"progress/cover_close" summary:"机库关闭舱盖进度推送" method:"get" tags:"无人机进度数据相关(ws)"`
|
|||
|
}
|
|||
|
|
|||
|
func (receiver PLANE) Progerss_cover_close(ctx context.Context, req *Progerss_cover_close_Req) (res *UsualRes, err error) {
|
|||
|
return save_ws(ctx, &globe.WS_Progress_cover_close_map)
|
|||
|
}
|
|||
|
|
|||
|
type Progerss_cover_open_Req struct {
|
|||
|
g.Meta `path:"progress/cover_open" summary:"机库打开舱盖进度推送" method:"get" tags:"无人机进度数据相关(ws)"`
|
|||
|
}
|
|||
|
|
|||
|
func (receiver PLANE) Progerss_cover_open(ctx context.Context, req *Progerss_cover_open_Req) (res *UsualRes, err error) {
|
|||
|
return save_ws(ctx, &globe.WS_Progress_cover_open_map)
|
|||
|
}
|
|||
|
|
|||
|
type Progerss_drone_close_Req struct {
|
|||
|
g.Meta `path:"progress/drone_close" summary:"飞行器关机进度推送" method:"get" tags:"无人机进度数据相关(ws)"`
|
|||
|
}
|
|||
|
|
|||
|
func (receiver PLANE) Progerss_drone_close(ctx context.Context, req *Progerss_drone_close_Req) (res *UsualRes, err error) {
|
|||
|
return save_ws(ctx, &globe.WS_Progress_drone_close_map)
|
|||
|
}
|
|||
|
|
|||
|
type Progerss_drone_open_Req struct {
|
|||
|
g.Meta `path:"progress/drone_open" summary:"飞行器开机进度推送" method:"get" tags:"无人机进度数据相关(ws)"`
|
|||
|
}
|
|||
|
|
|||
|
func (receiver PLANE) Progerss_drone_open(ctx context.Context, req *Progerss_drone_open_Req) (res *UsualRes, err error) {
|
|||
|
return save_ws(ctx, &globe.WS_Progress_drone_open_map)
|
|||
|
}
|
|||
|
|
|||
|
type DeviceStatusReq struct {
|
|||
|
g.Meta `path:"device_status" summary:"ws推送飞机状态" method:"get" tags:"无人机进度数据相关(ws)"`
|
|||
|
}
|
|||
|
type DeviceStatusRes struct {
|
|||
|
Code int `json:"code"`
|
|||
|
Data interface{} `json:"data"`
|
|||
|
}
|
|||
|
|
|||
|
func (receiver PLANE) DeviceStatus(ctx context.Context, req *DeviceStatusReq) (res *UsualRes, err error) {
|
|||
|
return save_ws(ctx, &globe.WS_Status_map)
|
|||
|
}
|
|||
|
|
|||
|
func save_ws(ctx context.Context, _map *globe.WS_MAP) (res *UsualRes, err error) {
|
|||
|
r := ghttp.RequestFromCtx(ctx)
|
|||
|
ws, err := r.WebSocket()
|
|||
|
if err != nil {
|
|||
|
return nil, err
|
|||
|
}
|
|||
|
ip := r.Get("token").String()
|
|||
|
|
|||
|
globe.MutexRw.Lock()
|
|||
|
(*_map)[ip] = ws
|
|||
|
globe.MutexRw.Unlock()
|
|||
|
fmt.Println("ws连接了", ip)
|
|||
|
for {
|
|||
|
_, _, err = ws.ReadMessage()
|
|||
|
if err != nil {
|
|||
|
fmt.Println("ws断开了", ip)
|
|||
|
delete(*_map, ip)
|
|||
|
return nil, err
|
|||
|
}
|
|||
|
}
|
|||
|
}
|