v5sdkgo/ws/ws_jrpc.go

165 lines
3.2 KiB
Go
Raw Permalink Normal View History

2024-12-14 19:09:06 +08:00
package ws
import (
"context"
2025-03-05 20:52:20 +08:00
. "gitea.zjmud.xyz/phyer/v5sdkgo/ws/wImpl"
2024-12-14 19:09:06 +08:00
"log"
"time"
)
/*
2024-12-16 11:41:20 +08:00
websocket交易 通用请求
参数说明
evtId封装的事件类型
id: 请求ID
op: 请求参数op
params: 请求参数
timeOut: 超时时间
2024-12-14 19:09:06 +08:00
*/
func (a *WsClient) jrpcReq(evtId Event, op string, id string, params []map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
res = true
tm := 5000
if len(timeOut) != 0 {
tm = timeOut[0]
}
req := &JRPCReq{
Id: id,
Op: op,
Args: params,
}
detail = &ProcessDetail{
EndPoint: a.WsEndPoint,
}
ctx := context.Background()
ctx, cancel := context.WithTimeout(ctx, time.Duration(tm)*time.Millisecond)
defer cancel()
ctx = context.WithValue(ctx, "detail", detail)
msg, err := a.process(ctx, evtId, req)
if err != nil {
res = false
log.Println("处理请求失败!", req, err)
return
}
detail.Data = msg
res, err = checkResult(req, msg)
if err != nil {
res = false
return
}
return
}
/*
2024-12-16 11:41:20 +08:00
单个下单
参数说明
id: 请求ID
params: 请求参数
timeOut: 超时时间
2024-12-14 19:09:06 +08:00
*/
func (a *WsClient) PlaceOrder(id string, param map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
op := "order"
evtId := EVENT_PLACE_ORDER
var args []map[string]interface{}
args = append(args, param)
return a.jrpcReq(evtId, op, id, args, timeOut...)
}
/*
2024-12-16 11:41:20 +08:00
批量下单
参数说明
id: 请求ID
params: 请求参数
timeOut: 超时时间
2024-12-14 19:09:06 +08:00
*/
func (a *WsClient) BatchPlaceOrders(id string, params []map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
op := "batch-orders"
evtId := EVENT_PLACE_BATCH_ORDERS
return a.jrpcReq(evtId, op, id, params, timeOut...)
}
/*
2024-12-16 11:41:20 +08:00
单个撤单
参数说明
id: 请求ID
params: 请求参数
timeOut: 超时时间
2024-12-14 19:09:06 +08:00
*/
func (a *WsClient) CancelOrder(id string, param map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
op := "cancel-order"
evtId := EVENT_CANCEL_ORDER
var args []map[string]interface{}
args = append(args, param)
return a.jrpcReq(evtId, op, id, args, timeOut...)
}
/*
2024-12-16 11:41:20 +08:00
批量撤单
参数说明
id: 请求ID
params: 请求参数
timeOut: 超时时间
2024-12-14 19:09:06 +08:00
*/
func (a *WsClient) BatchCancelOrders(id string, params []map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
op := "batch-cancel-orders"
evtId := EVENT_CANCEL_BATCH_ORDERS
return a.jrpcReq(evtId, op, id, params, timeOut...)
}
/*
2024-12-16 11:41:20 +08:00
单个改单
参数说明
id: 请求ID
params: 请求参数
timeOut: 超时时间
2024-12-14 19:09:06 +08:00
*/
func (a *WsClient) AmendOrder(id string, param map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
op := "amend-order"
evtId := EVENT_AMEND_ORDER
var args []map[string]interface{}
args = append(args, param)
return a.jrpcReq(evtId, op, id, args, timeOut...)
}
/*
2024-12-16 11:41:20 +08:00
批量改单
参数说明
id: 请求ID
params: 请求参数
timeOut: 超时时间
2024-12-14 19:09:06 +08:00
*/
func (a *WsClient) BatchAmendOrders(id string, params []map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
op := "batch-amend-orders"
evtId := EVENT_AMEND_BATCH_ORDERS
return a.jrpcReq(evtId, op, id, params, timeOut...)
}