update for gojs

This commit is contained in:
Star 2025-07-28 22:56:48 +08:00
parent 715de5e442
commit 57db518ef9
2 changed files with 17 additions and 17 deletions

8
go.mod
View File

@ -1,14 +1,14 @@
module apigo.cc/gojs/service module apigo.cc/gojs/service
go 1.23.0 go 1.24
require ( require (
apigo.cc/gojs v0.0.23 apigo.cc/gojs v0.0.25
apigo.cc/gojs/console v0.0.2 apigo.cc/gojs/console v0.0.2
apigo.cc/gojs/file v0.0.4 apigo.cc/gojs/file v0.0.5
apigo.cc/gojs/http v0.0.7 apigo.cc/gojs/http v0.0.7
apigo.cc/gojs/runtime v0.0.3 apigo.cc/gojs/runtime v0.0.3
apigo.cc/gojs/task v0.0.4 apigo.cc/gojs/task v0.0.6
apigo.cc/gojs/util v0.0.13 apigo.cc/gojs/util v0.0.13
github.com/gorilla/websocket v1.5.3 github.com/gorilla/websocket v1.5.3
github.com/ssgo/config v1.7.9 github.com/ssgo/config v1.7.9

View File

@ -89,7 +89,7 @@ var configed = false
func initConfig(opt *gojs.Obj, logger *log.Logger, vm *goja.Runtime) { func initConfig(opt *gojs.Obj, logger *log.Logger, vm *goja.Runtime) {
configed = true configed = true
s.InitConfig() s.InitConfig()
if startPath, ok := vm.GoData["startPath"]; ok { if startPath := vm.GetData("startPath"); startPath != nil {
s.SetWorkPath(u.String(startPath)) s.SetWorkPath(u.String(startPath))
} }
// 处理配置 // 处理配置
@ -266,10 +266,10 @@ func init() {
} }
// 处理Watch // 处理Watch
if vm.GoData["inWatch"] == true { if inWatch := vm.GetData("inWatch"); inWatch != nil && inWatch.(bool) {
onWatchConn := map[string]*websocket.Conn{} onWatchConn := map[string]*websocket.Conn{}
onWatchLock := sync.Mutex{} onWatchLock := sync.Mutex{}
vm.GoData["onWatch"] = func(filename string) { vm.SetData("onWatch", func(filename string) {
onWatchLock.Lock() onWatchLock.Lock()
defer onWatchLock.Unlock() defer onWatchLock.Unlock()
for id, conn := range onWatchConn { for id, conn := range onWatchConn {
@ -277,7 +277,7 @@ func init() {
delete(onWatchConn, id) delete(onWatchConn, id)
} }
} }
} })
s.AddShutdownHook(func() { s.AddShutdownHook(func() {
for _, conn := range onWatchConn { for _, conn := range onWatchConn {
conn.Close() conn.Close()
@ -497,7 +497,7 @@ func init() {
for i, require := range requiresObj { for i, require := range requiresObj {
requires[i] = u.String(require) requires[i] = u.String(require)
} }
vm.GoData[fmt.Sprint("REQUIRE_"+host, method, path)] = requires vm.SetData(fmt.Sprint("REQUIRE_"+host, method, path), requires)
} }
if verifiesObj := o.Obj("verifies"); verifiesObj != nil { if verifiesObj := o.Obj("verifies"); verifiesObj != nil {
verifiesSet := map[string]func(any, *goja.Runtime) bool{} verifiesSet := map[string]func(any, *goja.Runtime) bool{}
@ -531,7 +531,7 @@ func init() {
} }
} }
} }
vm.GoData[fmt.Sprint("VERIFY_"+host, method, path)] = verifiesSet vm.SetData(fmt.Sprint("VERIFY_"+host, method, path), verifiesSet)
} }
opt := s.WebServiceOptions{ opt := s.WebServiceOptions{
@ -542,18 +542,18 @@ func init() {
Limiters: usedLimiters, Limiters: usedLimiters,
} }
startFile := u.String(vm.GoData["startFile"]) startFile := u.String(vm.GetData("startFile"))
poolsLock.RLock() poolsLock.RLock()
poolExist := poolExists[startFile] poolExist := poolExists[startFile]
poolsLock.RUnlock() poolsLock.RUnlock()
if poolExist { if poolExist {
// 从对象调用(支持并发) // 从对象调用(支持并发)
actionKey := "REGISTER_" + host + method + path actionKey := "REGISTER_" + host + method + path
vm.GoData[actionKey] = action vm.SetData(actionKey, action)
vm.GoData[actionKey+"This"] = args.This vm.SetData(actionKey+"This", args.This)
if method == "WS" { if method == "WS" {
vm.GoData[actionKey+"onMessage"] = o.Func("onMessage") vm.SetData(actionKey+"onMessage", o.Func("onMessage"))
vm.GoData[actionKey+"onClose"] = o.Func("onClose") vm.SetData(actionKey+"onClose", o.Func("onClose"))
} }
poolsLock.Lock() poolsLock.Lock()
actionRegistered := poolActionRegistered[actionKey] actionRegistered := poolActionRegistered[actionKey]
@ -871,10 +871,10 @@ func runAction(action goja.Callable, vm *goja.Runtime, thisArg goja.Value, args
defer vm.CallbackLocker.Unlock() defer vm.CallbackLocker.Unlock()
// 验证请求参数的有效性 // 验证请求参数的有效性
if verifies, ok := vm.GoData["VERIFY_"+u.String(request.Get("registerTag"))].(map[string]func(any, *goja.Runtime) bool); ok { if verifies, ok := vm.GetData("VERIFY_" + u.String(request.Get("registerTag"))).(map[string]func(any, *goja.Runtime) bool); ok {
failedFields := make([]string, 0) failedFields := make([]string, 0)
// 检查必填字段 // 检查必填字段
if requires, ok := vm.GoData["REQUIRE_"+u.String(request.Get("registerTag"))].([]string); ok { if requires, ok := vm.GetData("REQUIRE_" + u.String(request.Get("registerTag"))).([]string); ok {
for _, requireField := range requires { for _, requireField := range requires {
if _, ok := args[requireField]; !ok { if _, ok := args[requireField]; !ok {
failedFields = append(failedFields, requireField) failedFields = append(failedFields, requireField)