package main

import (
	"leaf/log"
	"net"
	"os"
	"os/signal"
)

const (
	lenMsgLen    = 2    //消息长度
	littleEndian = true // true 表示使用小端序，false 表示使用大端序。
	minMsgLen    = 0
	maxMsgLen    = 4096
)

func recv(conn net.Conn) {
	// 循环收发消息
	for {
		data, err := Read(conn)
		if err != nil {
			log.Debug("read message: %v", err)
			break
		}
		dispatchMsg(data)
	}
}

func main() {
	// TCP
	// 设置目标服务器的地址和端口
	serverAddr := "127.0.0.1:8080"

	// 通过net.Dial建立连接
	conn, err := net.Dial("tcp", serverAddr)
	if err != nil {
		log.Fatal("Error connecting to server: ", err)
	}
	defer conn.Close()

	/* ws
	// 设置目标服务器的地址和端口
	serverAddr := "ws://127.0.0.1:8080" // 使用 ws:// 协议进行 WebSocket 连接

	//通过 websocket.Dial 建立连接
	conn, _, err := websocket.DefaultDialer.Dial(serverAddr, nil)
	if err != nil {
		log.Fatal("Error connecting to server: ", err)
	}
	defer conn.Close()
	*/

	go recv(conn)

	//心跳
	SendHeartbeat(conn)
	// 强制登录一次
	//UserLogin(conn)

	// close
	c := make(chan os.Signal, 1)
	signal.Notify(c, os.Interrupt, os.Kill)
	sig := <-c
	log.Release("Leaf closing down (signal: %v)", sig)
}
