testFlow/cli/main.go
Wyle.Gong-巩文昕 67b0ad2723 init
2025-04-22 16:42:48 +08:00

101 lines
2.2 KiB
Go

//
// main.go
// Copyright (C) 2024 veypi <i@veypi.com>
// 2025-02-27 19:32:09
// Distributed under terms of the MIT license.
//
package main
import (
"app/api"
"app/api/project/stage"
"app/cfg"
"fmt"
"log"
"time"
"github.com/nats-io/nats-server/v2/server"
"github.com/nats-io/nats.go"
"github.com/veypi/OneBD/rest"
"github.com/veypi/utils/flags"
"github.com/veypi/utils/logv"
)
func main() {
opts := &server.Options{
Host: "127.0.0.1",
Port: 4222,
NoLog: false,
NoSigs: false,
HTTPPort: 8222, // 监控端口
Websocket: server.WebsocketOpts{
Port: 9222, // 使用相同的端口
Host: "127.0.0.1", // WebSocket 主机
NoTLS: true, // 非 TLS WebSocket
},
}
// 创建并启动服务器
natsServer, err := server.NewServer(opts)
if err != nil {
log.Fatalf("无法创建 NATS 服务器: %v", err)
}
// 启动服务器 (以 goroutine 方式运行)
go natsServer.Start()
// 等待服务器启动
if !natsServer.ReadyForConnections(5 * time.Second) {
log.Fatal("NATS 服务器无法在指定时间内启动")
}
fmt.Println("NATS 服务器已启动")
// 示例:连接到刚刚启动的 NATS 服务器
nc, err := nats.Connect("nats://127.0.0.1:4222")
if err != nil {
log.Fatalf("无法连接到 NATS: %v", err)
}
defer nc.Close()
nc1, err := nats.Connect("ws://127.0.0.1:9222")
if err != nil {
log.Fatalf("无法连接到 ws: %v", err)
}
defer nc1.Close()
// 现在可以使用 nc 发布和订阅消息
fmt.Println("已成功连接到 NATS 服务器")
if err := stage.InitGraphProcessor(); err != nil {
log.Fatalf("Stage 图生成处理器初始化失败: %v", err)
}
log.Println("Stage 图生成处理器初始化成功.")
var CMD = flags.New("app", "the backend server of app")
CMD.Command = runWeb
CMD.Parse()
err = CMD.Run()
if err != nil {
logv.Warn().Msg(err.Error())
}
}
func runWeb() error {
server, err := rest.New(rest.WithHost(cfg.Config.Host), rest.WithPort(cfg.Config.Port))
if err != nil {
return err
}
// server.SetRouter(app.Router)
// server.Router().Print()
// return server.Run()
server.Router().Extend("api", api.Router)
server.Router().Print()
return server.Run()
}