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
|
||||
}
|
||||
|
||||
share.Walk(dir, ".json", func(root, filename string) {
|
||||
share.Walk(dir, ".http.json", func(root, filename string) {
|
||||
name := prefix + share.SpecName(root, filename)
|
||||
content := share.ReadFile(filename)
|
||||
gou.LoadAPI(string(content), name)
|
||||
|
|
|
|||
|
|
@ -30,11 +30,11 @@ var rootCmd = &cobra.Command{
|
|||
func init() {
|
||||
rootCmd.AddCommand(
|
||||
versionCmd,
|
||||
domainCmd,
|
||||
// domainCmd,
|
||||
migrateCmd,
|
||||
inspectCmd,
|
||||
startCmd,
|
||||
importCmd,
|
||||
// importCmd,
|
||||
runCmd,
|
||||
)
|
||||
rootCmd.SetHelpCommand(helpCmd)
|
||||
|
|
|
|||
18
cmd/start.go
18
cmd/start.go
|
|
@ -68,11 +68,11 @@ var startCmd = &cobra.Command{
|
|||
port = ""
|
||||
}
|
||||
|
||||
fmt.Printf(color.GreenString("\n\n访问入口"))
|
||||
fmt.Printf(color.GreenString("\n\n象传应用引擎"))
|
||||
fmt.Printf(color.WhiteString("\n---------------------------------"))
|
||||
fmt.Printf(color.GreenString("\n前台界面: http://%s%s/\n", domain, port))
|
||||
fmt.Printf(color.GreenString("管理后台: http://%s%s/xiang/login\n", domain, port))
|
||||
fmt.Printf(color.GreenString("API 接口: http://%s%s/api\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/admin\n", "127.0.0.1", 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, ",")))
|
||||
|
||||
// 调试模式
|
||||
|
|
@ -80,6 +80,16 @@ var startCmd = &cobra.Command{
|
|||
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()
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import (
|
|||
"github.com/yaoapp/xiang/page"
|
||||
"github.com/yaoapp/xiang/plugin"
|
||||
"github.com/yaoapp/xiang/query"
|
||||
"github.com/yaoapp/xiang/server"
|
||||
"github.com/yaoapp/xiang/share"
|
||||
"github.com/yaoapp/xiang/table"
|
||||
"github.com/yaoapp/xiang/workflow"
|
||||
|
|
@ -42,6 +43,7 @@ func Load(cfg config.Config) {
|
|||
importer.Load(cfg) // 加载数据导入 imports
|
||||
workflow.Load(cfg) // 加载工作流 workflow
|
||||
api.Load(cfg) // 加载业务接口 API
|
||||
server.Load(cfg) // 加载服务
|
||||
|
||||
// 加密密钥函数
|
||||
gou.LoadCrypt(fmt.Sprintf(`{"key":"%s"}`, cfg.Database.AESKey), "AES")
|
||||
|
|
|
|||
|
|
@ -20,5 +20,5 @@ func check(t *testing.T) {
|
|||
for key := range gou.Flows {
|
||||
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
|
||||
|
||||
// VERSION 版本号
|
||||
const VERSION = "0.9.2"
|
||||
const VERSION = "0.9.3"
|
||||
|
||||
// DOMAIN 许可域(废弃)
|
||||
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