Files
OmniSocketGo/cmd/server/main.go
nnbcccscdscdsc 4824675244 init
2026-03-23 20:18:53 +08:00

50 lines
1.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package main
import (
"flag"
"log"
"net"
"omnisocketgo/cmd/internal/latencylog"
"omnisocketgo/cmd/internal/server"
)
func main() {
listenAddr := flag.String("listen", ":9000", "server listen address") //监听地址
logPath := flag.String("latency-log", "", "optional JSONL file path for latency timestamp logs")
flag.Parse() //查看命令行参数
hubOptions := make([]server.Option, 0, 1)
if *logPath != "" {
logger, err := latencylog.NewJSONLLogger(*logPath)
if err != nil {
log.Fatalf("create latency logger %s: %v", *logPath, err)
}
defer logger.Close()
hubOptions = append(hubOptions, server.WithLogger(logger))
}
listener, err := net.Listen("tcp", *listenAddr) //开启tcp监听器监听来自客户端的连接请求
if err != nil {
log.Fatalf("listen on %s: %v", *listenAddr, err)
}
defer listener.Close() //确保在 main 函数退出时关闭监听器
hub := server.NewHub(hubOptions...) //创建一个新的 Hub 实例,负责管理客户端连接和消息转发
log.Printf("server listening on %s", listener.Addr())
for {
conn, err := listener.Accept()
if err != nil {
log.Printf("accept connection: %v", err)
continue
}
go func(rawConn net.Conn) {
if err := hub.ServeConn(rawConn); err != nil {
log.Printf("connection closed: %v", err)
}
}(conn)
}
}