升级异常机制

This commit is contained in:
Star 2025-12-12 21:45:50 +08:00
parent 00ac83205d
commit a07bbb7412
2 changed files with 41 additions and 20 deletions

20
go.mod
View File

@ -5,16 +5,16 @@ go 1.24.0
toolchain go1.24.3 toolchain go1.24.3
require ( require (
apigo.cc/gojs v0.0.28 apigo.cc/gojs v0.0.32
apigo.cc/gojs/console v0.0.3 apigo.cc/gojs/console v0.0.4
apigo.cc/gojs/file v0.0.6 apigo.cc/gojs/file v0.0.8
apigo.cc/gojs/util v0.0.15 apigo.cc/gojs/util v0.0.17
github.com/go-rod/rod v0.116.2 github.com/go-rod/rod v0.116.2
github.com/gorilla/websocket v1.5.3 github.com/gorilla/websocket v1.5.3
github.com/ssgo/config v1.7.10 github.com/ssgo/config v1.7.10
github.com/ssgo/httpclient v1.7.8 github.com/ssgo/httpclient v1.7.8
github.com/ssgo/log v1.7.9 github.com/ssgo/log v1.7.10
github.com/ssgo/s v1.7.24 github.com/ssgo/s v1.7.25
github.com/ssgo/u v1.7.23 github.com/ssgo/u v1.7.23
) )
@ -44,9 +44,9 @@ require (
github.com/ysmood/gson v0.7.3 // indirect github.com/ysmood/gson v0.7.3 // indirect
github.com/ysmood/leakless v0.9.0 // indirect github.com/ysmood/leakless v0.9.0 // indirect
github.com/yusufpapurcu/wmi v1.2.4 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect
golang.org/x/crypto v0.44.0 // indirect golang.org/x/crypto v0.46.0 // indirect
golang.org/x/net v0.47.0 // indirect golang.org/x/net v0.48.0 // indirect
golang.org/x/sys v0.38.0 // indirect golang.org/x/sys v0.39.0 // indirect
golang.org/x/text v0.31.0 // indirect golang.org/x/text v0.32.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect
) )

41
http.go
View File

@ -128,7 +128,10 @@ func setConfig(cli *Http, opt *gojs.Obj) {
func makeResult(r *httpclient.Result, vm *goja.Runtime) goja.Value { func makeResult(r *httpclient.Result, vm *goja.Runtime) goja.Value {
if r.Error != nil { if r.Error != nil {
panic(vm.NewGoError(r.Error)) // panic(vm.NewGoError(r.Error))
vm.SetData("_lastError", r.Error)
gojs.GetLogger(vm).Error(r.Error.Error())
return nil
} }
headers := map[string]string{} headers := map[string]string{}
for k, v := range r.Response.Header { for k, v := range r.Response.Header {
@ -368,7 +371,10 @@ func (hc *Http) Connect(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
} }
return vm.ToValue(gojs.MakeMap(ws)) return vm.ToValue(gojs.MakeMap(ws))
} else { } else {
panic(vm.NewGoError(err)) // panic(vm.NewGoError(err))
vm.SetData("_lastError", err)
gojs.GetLogger(vm).Error(err.Error())
return nil
} }
} }
@ -498,7 +504,10 @@ func (ws *WS) PingCount(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
func (ws *WS) Read(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value { func (ws *WS) Read(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
typ, data, err := readWSMessage(ws.conn) typ, data, err := readWSMessage(ws.conn)
if err != nil { if err != nil {
panic(vm.NewGoError(err)) // panic(vm.NewGoError(err))
vm.SetData("_lastError", err)
gojs.GetLogger(vm).Error(err.Error())
return vm.ToValue(false)
} }
return vm.ToValue(gojs.Map{ return vm.ToValue(gojs.Map{
"type": typ, "type": typ,
@ -559,17 +568,23 @@ func (ws *WS) Write(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
err = ws.writeMessage(websocket.TextMessage, u.JsonBytes(args.Any(0))) err = ws.writeMessage(websocket.TextMessage, u.JsonBytes(args.Any(0)))
} }
if err != nil { if err != nil {
panic(vm.NewGoError(err)) // panic(vm.NewGoError(err))
vm.SetData("_lastError", err)
gojs.GetLogger(vm).Error(err.Error())
return vm.ToValue(false)
} }
return nil return vm.ToValue(true)
} }
func (ws *WS) Ping(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value { func (ws *WS) Ping(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
err := ws.writeMessage(websocket.PingMessage, nil) err := ws.writeMessage(websocket.PingMessage, nil)
if err != nil { if err != nil {
panic(vm.NewGoError(err)) // panic(vm.NewGoError(err))
vm.SetData("_lastError", err)
gojs.GetLogger(vm).Error(err.Error())
return vm.ToValue(false)
} }
return nil return vm.ToValue(true)
} }
func (ws *WS) WriteMessage(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value { func (ws *WS) WriteMessage(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
@ -592,9 +607,12 @@ func (ws *WS) WriteMessage(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Valu
err = ws.writeMessage(websocket.TextMessage, args.Bytes(1)) err = ws.writeMessage(websocket.TextMessage, args.Bytes(1))
} }
if err != nil { if err != nil {
panic(vm.NewGoError(err)) // panic(vm.NewGoError(err))
vm.SetData("_lastError", err)
gojs.GetLogger(vm).Error(err.Error())
return vm.ToValue(false)
} }
return nil return vm.ToValue(true)
} }
func (ws *WS) Close(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value { func (ws *WS) Close(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
@ -604,7 +622,10 @@ func (ws *WS) Close(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
ws.closed = true ws.closed = true
err := ws.conn.Close() err := ws.conn.Close()
if err != nil { if err != nil {
panic(vm.NewGoError(err)) // panic(vm.NewGoError(err))
vm.SetData("_lastError", err)
gojs.GetLogger(vm).Error(err.Error())
return vm.ToValue(false)
} }
<-ws.pingStopChan <-ws.pingStopChan
<-ws.closeChan <-ws.closeChan