v0.9.3 + socket server support ( yao start alpha )
This commit is contained in:
parent
b9e8f972ce
commit
6372faf119
11 changed files with 100 additions and 9 deletions
|
|
@ -18,7 +18,7 @@ func LoadFrom(dir string, prefix string) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
share.Walk(dir, ".json", func(root, filename string) {
|
share.Walk(dir, ".http.json", func(root, filename string) {
|
||||||
name := prefix + share.SpecName(root, filename)
|
name := prefix + share.SpecName(root, filename)
|
||||||
content := share.ReadFile(filename)
|
content := share.ReadFile(filename)
|
||||||
gou.LoadAPI(string(content), name)
|
gou.LoadAPI(string(content), name)
|
||||||
|
|
|
||||||
|
|
@ -30,11 +30,11 @@ var rootCmd = &cobra.Command{
|
||||||
func init() {
|
func init() {
|
||||||
rootCmd.AddCommand(
|
rootCmd.AddCommand(
|
||||||
versionCmd,
|
versionCmd,
|
||||||
domainCmd,
|
// domainCmd,
|
||||||
migrateCmd,
|
migrateCmd,
|
||||||
inspectCmd,
|
inspectCmd,
|
||||||
startCmd,
|
startCmd,
|
||||||
importCmd,
|
// importCmd,
|
||||||
runCmd,
|
runCmd,
|
||||||
)
|
)
|
||||||
rootCmd.SetHelpCommand(helpCmd)
|
rootCmd.SetHelpCommand(helpCmd)
|
||||||
|
|
|
||||||
18
cmd/start.go
18
cmd/start.go
|
|
@ -68,11 +68,11 @@ var startCmd = &cobra.Command{
|
||||||
port = ""
|
port = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf(color.GreenString("\n\n访问入口"))
|
fmt.Printf(color.GreenString("\n\n象传应用引擎"))
|
||||||
fmt.Printf(color.WhiteString("\n---------------------------------"))
|
fmt.Printf(color.WhiteString("\n---------------------------------"))
|
||||||
fmt.Printf(color.GreenString("\n前台界面: http://%s%s/\n", domain, port))
|
fmt.Printf(color.GreenString("\n前台界面: http://%s%s/\n", "127.0.0.1", port))
|
||||||
fmt.Printf(color.GreenString("管理后台: http://%s%s/xiang/login\n", domain, port))
|
fmt.Printf(color.GreenString("管理后台: http://%s%s/xiang/login/admin\n", "127.0.0.1", port))
|
||||||
fmt.Printf(color.GreenString("API 接口: http://%s%s/api\n", domain, port))
|
fmt.Printf(color.GreenString("API 接口: http://%s%s/api\n", "127.0.0.1", port))
|
||||||
fmt.Printf(color.GreenString("跨域访问: %s\n\n", strings.Join(config.Conf.Service.Allow, ",")))
|
fmt.Printf(color.GreenString("跨域访问: %s\n\n", strings.Join(config.Conf.Service.Allow, ",")))
|
||||||
|
|
||||||
// 调试模式
|
// 调试模式
|
||||||
|
|
@ -80,6 +80,16 @@ var startCmd = &cobra.Command{
|
||||||
service.Watch(config.Conf)
|
service.Watch(config.Conf)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(args) > 0 && args[0] == "alpha" {
|
||||||
|
// 启动 Socket 服务 (alpha)
|
||||||
|
for _, srv := range gou.Servers {
|
||||||
|
fmt.Printf(color.GreenString("%s服务", srv.Name))
|
||||||
|
fmt.Printf(color.WhiteString("\n---------------------------------"))
|
||||||
|
fmt.Printf(color.GreenString("\nHost: %s://%s", srv.Protocol, srv.Host))
|
||||||
|
fmt.Printf(color.GreenString("\nPort: %s\n\n", srv.Port))
|
||||||
|
go srv.Start()
|
||||||
|
}
|
||||||
|
}
|
||||||
service.Start()
|
service.Start()
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ import (
|
||||||
"github.com/yaoapp/xiang/page"
|
"github.com/yaoapp/xiang/page"
|
||||||
"github.com/yaoapp/xiang/plugin"
|
"github.com/yaoapp/xiang/plugin"
|
||||||
"github.com/yaoapp/xiang/query"
|
"github.com/yaoapp/xiang/query"
|
||||||
|
"github.com/yaoapp/xiang/server"
|
||||||
"github.com/yaoapp/xiang/share"
|
"github.com/yaoapp/xiang/share"
|
||||||
"github.com/yaoapp/xiang/table"
|
"github.com/yaoapp/xiang/table"
|
||||||
"github.com/yaoapp/xiang/workflow"
|
"github.com/yaoapp/xiang/workflow"
|
||||||
|
|
@ -42,6 +43,7 @@ func Load(cfg config.Config) {
|
||||||
importer.Load(cfg) // 加载数据导入 imports
|
importer.Load(cfg) // 加载数据导入 imports
|
||||||
workflow.Load(cfg) // 加载工作流 workflow
|
workflow.Load(cfg) // 加载工作流 workflow
|
||||||
api.Load(cfg) // 加载业务接口 API
|
api.Load(cfg) // 加载业务接口 API
|
||||||
|
server.Load(cfg) // 加载服务
|
||||||
|
|
||||||
// 加密密钥函数
|
// 加密密钥函数
|
||||||
gou.LoadCrypt(fmt.Sprintf(`{"key":"%s"}`, cfg.Database.AESKey), "AES")
|
gou.LoadCrypt(fmt.Sprintf(`{"key":"%s"}`, cfg.Database.AESKey), "AES")
|
||||||
|
|
|
||||||
|
|
@ -20,5 +20,5 @@ func check(t *testing.T) {
|
||||||
for key := range gou.Flows {
|
for key := range gou.Flows {
|
||||||
keys = append(keys, key)
|
keys = append(keys, key)
|
||||||
}
|
}
|
||||||
assert.Equal(t, 21, len(keys))
|
assert.Equal(t, 22, len(keys))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
29
server/socket.go
Normal file
29
server/socket.go
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
package server
|
||||||
|
|
||||||
|
import (
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
|
"github.com/yaoapp/gou"
|
||||||
|
"github.com/yaoapp/xiang/config"
|
||||||
|
"github.com/yaoapp/xiang/share"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Load 加载API
|
||||||
|
func Load(cfg config.Config) {
|
||||||
|
var root = filepath.Join(cfg.RootAPI, "..", "servers")
|
||||||
|
LoadFrom(root, "")
|
||||||
|
}
|
||||||
|
|
||||||
|
// LoadFrom 从特定目录加载
|
||||||
|
func LoadFrom(dir string, prefix string) {
|
||||||
|
|
||||||
|
if share.DirNotExists(dir) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
share.Walk(dir, ".sock.json", func(root, filename string) {
|
||||||
|
name := prefix + share.SpecName(root, filename)
|
||||||
|
content := share.ReadFile(filename)
|
||||||
|
gou.LoadServer(string(content), name)
|
||||||
|
})
|
||||||
|
}
|
||||||
23
server/socket_test.go
Normal file
23
server/socket_test.go
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
package server
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/yaoapp/gou"
|
||||||
|
"github.com/yaoapp/xiang/config"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestLoad(t *testing.T) {
|
||||||
|
Load(config.Conf)
|
||||||
|
LoadFrom("not a path", "404.")
|
||||||
|
check(t)
|
||||||
|
}
|
||||||
|
|
||||||
|
func check(t *testing.T) {
|
||||||
|
keys := []string{}
|
||||||
|
for key := range gou.Servers {
|
||||||
|
keys = append(keys, key)
|
||||||
|
}
|
||||||
|
assert.Equal(t, 1, len(keys))
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package share
|
package share
|
||||||
|
|
||||||
// VERSION 版本号
|
// VERSION 版本号
|
||||||
const VERSION = "0.9.2"
|
const VERSION = "0.9.3"
|
||||||
|
|
||||||
// DOMAIN 许可域(废弃)
|
// DOMAIN 许可域(废弃)
|
||||||
const DOMAIN = "*.iqka.com"
|
const DOMAIN = "*.iqka.com"
|
||||||
|
|
|
||||||
7
tests/flows/rfid/read.flow.json
Normal file
7
tests/flows/rfid/read.flow.json
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"label": "读取RFID标签",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "读取RFID标签",
|
||||||
|
"nodes": [{ "script": "print" }],
|
||||||
|
"output": null
|
||||||
|
}
|
||||||
11
tests/flows/rfid/read.print.js
Normal file
11
tests/flows/rfid/read.print.js
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
function main(args, out, res) {
|
||||||
|
// 100000012021128798321101 15 2d 02 f2 96 72 1e 52 b9 cd
|
||||||
|
var idstr = args[0] || "";
|
||||||
|
var len = idstr.length;
|
||||||
|
|
||||||
|
if (len != 36) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
id = BigInt("0x" + idstr.substring(8, len - 8).toUpperCase()).toString(10);
|
||||||
|
console.log(id);
|
||||||
|
}
|
||||||
9
tests/servers/rfid.sock.json
Normal file
9
tests/servers/rfid.sock.json
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"name": "RFID接收器",
|
||||||
|
"description": "用来接收并处理RIFD",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"protocol": "tcp",
|
||||||
|
"host": "0.0.0.0",
|
||||||
|
"port": "3019",
|
||||||
|
"process": "flows.rfid.read"
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue