syntax = "v1"

info (
	title: "websocket"// TODO: add title
	desc: // TODO: add description
	author: ""
	email: ""
)

import "basic.api"
service websocket {
	//websocket数据交互
	@handler DataTransferHandler
	get /api/websocket/data_transfer(DataTransferReq) returns (response);
	//云渲染完了通知接口
	@handler RenderNotifyHandler
	post /api/websocket/render_notify(RenderNotifyReq) returns (response);
	//通用回调接口
	@handler CommonNotifyHandler
	post /api/websocket/common_notify(CommonNotifyReq) returns (response);
	//获取ws统计信息
	@handler GetStatHandler
	get /api/websocket/get_stat(GetStatReq) returns (response);
}

//websocket数据交互[
type DataTransferReq {
	Wid string `form:"wid,optional"`
}
//渲染完了通知接口
type RenderNotifyReq {
	TaskId   string `json:"task_id"`
	Image    string `json:"image"`
	Code     int    `json:"code,optional"`
	Msg      string `json:"msg,optional"`
	CostTime string `json:"cost_time"` //unity处理时间
}
//通用回调接口
type CommonNotifyReq {
	Wid     string                 `json:"wid,optional"`      //websocket连接标识(找ws连接优先级高于user_id和guestid)
	UserId  int64                  `json:"user_id,optional"`  //用户id
	GuestId int64                  `json:"guest_id,optional"` //游客id
	Data    map[string]interface{} `json:"data"`              //后端与前端约定好的数据
}
//获取ws统计信息
type GetStatReq {
	Password string `form:"password"`
	UserKeys string `form:"user_keys,optional"`
}
type GetStatRsp {
	WsTotalCount        int         `json:"ws_total_count"`         //ws连接总数
	CurCombineCount     int         `json:"cur_combine_count"`      //合图任务数
	CombineErrorCount   int         `json:"combine_error_count"`    //合图失败数
	CurUnityHandleCount int         `json:"cur_unity_handle_count"` //当前unity请求总数
	UnityErrorCount     int         `json:"unity_error_count"`      //unity错误统计
	UserWsStat          interface{} `json:"user_ws_stat"`           //用户连接统计
}