只留一个tao的tcp链接

main
wangbin 3 months ago
parent 073e743060
commit 9768bef9b4

@ -62,12 +62,12 @@ func (para *FLXNetworkCmdSender) InitPara() {
// log.AddFilter("stdout", log4go.DEBUG, log4go.NewConsoleLogWriter())
// }
type CustomMessage struct {
type Message struct {
Content []byte
}
// 实现tao.Message接口方法
func (m CustomMessage) Serialize() ([]byte, error) {
func (m Message) Serialize() ([]byte, error) {
defer func() {
if r := recover(); r != nil {
@ -78,7 +78,7 @@ func (m CustomMessage) Serialize() ([]byte, error) {
return m.Content, nil // 直接返回原始字节
}
func (m CustomMessage) MessageNumber() int32 {
func (m Message) MessageNumber() int32 {
defer func() {
if r := recover(); r != nil {
@ -176,6 +176,7 @@ func ConnectToServer() {
MPerIDNetID[v] = strid
}
}
IsConnect = true
for i := 0; i < len(UnSendToServerData); {
AsClicent.Write(UnSendToServerData[i])
@ -199,15 +200,40 @@ func ConnectToServer() {
onMessage := tao.OnMessageOption(func(msg tao.Message, c tao.WriteCloser) {
Remote_IP := strings.Split((c.(*tao.ClientConn)).Name(), ":")[0]
IsConnect = true
fmt.Println(msg.(CustomMessage).Content, Remote_IP)
fmt.Println(msg.(Message).Content, Remote_IP)
})
AsClicent = tao.NewClientConn(0, c, onConnect, onError, onClose, onMessage)
AsClicent.Start()
return // 连接成功后退出循环
}
}
const (
// ChatMessage is the message number of chat message.
ChatMessage int32 = 1
)
// DeserializeMessage deserializes bytes into Message.
func DeserializeMessage(data []byte) (message tao.Message, err error) {
defer func() {
if r := recover(); r != nil {
log.Error("DeserializeMessage:", r)
}
}()
if data == nil {
return nil, tao.ErrNilData
}
content := (data)
msg := Message{
Content: content,
}
return msg, nil
}
func StartTCP() {
defer func() {
@ -218,6 +244,7 @@ func StartTCP() {
MIPNetID = make(map[string]int64)
MPerIDNetID = make(map[string]int64)
tao.Register(ChatMessage, DeserializeMessage, nil)
go ConnectToServer()
// //TCP连接
@ -255,8 +282,8 @@ func StartTCP() {
// onMessage := tao.OnMessageOption(func(msg tao.Message, c tao.WriteCloser) {
// Remote_IP := strings.Split((c.(*tao.ClientConn)).Name(), ":")[0]
// // AsClicent_DatagramReceived(Remote_IP, (c.(*tao.ClientConn)).NetID(), msg.(CustomMessage).Content)
// fmt.Println(msg.(CustomMessage).Content, Remote_IP)
// // AsClicent_DatagramReceived(Remote_IP, (c.(*tao.ClientConn)).NetID(), msg.(Message).Content)
// fmt.Println(msg.(Message).Content, Remote_IP)
// })
// AsClicent = tao.NewClientConn(0, c, onConnect, onError, onClose, onMessage)
// AsClicent.Start()
@ -288,7 +315,7 @@ func CTcpServerStart() {
var SendLock sync.RWMutex
var UnSendToServerData = make([]CustomMessage, 0)
var UnSendToServerData = make([]Message, 0)
// / <summary>发送命令</summary>
// / <param name="buf">命令内容</param>
@ -311,53 +338,53 @@ func (para *FLXNetworkCmdSender) SendToServer(dataMsg []byte) {
}
// dataMsg = FullCheckSum(dataMsg)
if para.IsSendToServer {
if para.IsConnect {
// _, err := para.CurrentSocket.Write([]byte{0x7e})
// if err != nil {
// para.IsConnect = false // 立即标记为断开
// }
// _, err := para.CurrentSocket.Write(dataMsg)
// if err != nil {
// fmt.Println("tcp发送失败", err.Error())
// }
// fmt.Println(dataMsg)
if IsConnect {
SendLock.Lock()
// 伪代码示例:需确保遍历所有连接
msg := CustomMessage{Content: dataMsg}
// CTcpServer.Broadcast(msg)
error := AsClicent.Write(msg)
if error != nil {
if !Common.Contain(UnSendToServerData, msg) {
UnSendToServerData = append(UnSendToServerData, msg)
}
log.Error("SendToServer发送卡号失败:", msg)
}
// if para.IsSendToServer {
if para.IsConnect {
// _, err := para.CurrentSocket.Write([]byte{0x7e})
// if err != nil {
// para.IsConnect = false // 立即标记为断开
// }
// _, err := para.CurrentSocket.Write(dataMsg)
// if err != nil {
// fmt.Println("tcp发送失败", err.Error())
// }
// fmt.Println(dataMsg)
if IsConnect {
SendLock.Lock()
// 伪代码示例:需确保遍历所有连接
msg := Message{Content: dataMsg}
// CTcpServer.Broadcast(msg)
SendLock.Unlock()
} else {
msg := CustomMessage{Content: dataMsg}
error := AsClicent.Write(msg)
if error != nil {
if !Common.Contain(UnSendToServerData, msg) {
UnSendToServerData = append(UnSendToServerData, msg)
}
log.Error("SendToServer发送卡号失败:", msg)
}
SendLock.Unlock()
} else {
fmt.Printf("服务器没有连接!")
if para.TryConnect(0) {
para.CurrentSocket.Write(dataMsg)
msg := Message{Content: dataMsg}
if !Common.Contain(UnSendToServerData, msg) {
UnSendToServerData = append(UnSendToServerData, msg)
}
log.Error("SendToServer发送卡号失败:", msg)
}
} else {
fmt.Printf("服务器没有连接!")
if para.TryConnect(0) {
para.CurrentSocket.Write(dataMsg)
}
}
// }
if !para.IsSendToBackUpServer {
return
}

@ -175,7 +175,7 @@ func (para *FlxNetworkComController) StartTCP(Contype int) bool {
if para.SocketConnected() {
para.IsOpened = true
para.Sender.CurrentSocket = para.NetSocket
// para.Reader.CurrentSocket = para.NetSocket
para.Reader.CurrentSocket = para.NetSocket
return true
} else {
@ -231,6 +231,7 @@ func (para *FlxNetworkComController) TimerCallbackHandler() {
}
}()
for para.HandlerBack {
fmt.Println("循环执行中")
para.Event_SeatInfos = para.Event_SeatInfos[0:0]
comPacket := <-para.ComPackets
@ -286,6 +287,30 @@ func (para *FlxNetworkComController) SocketConnected() bool {
fmt.Println("关闭原有tcp连接")
para.NetSocket.Close()
}
// if para.ServerIP == "" {
// para.InitFlxNetControl()
// }
// lp, _ := Common.ExternalIP()
// para.LocalIP = lp
// para.ServerPort = 9667
// cfig := Common.LoadConfig()
// para.ServerIP = cfig.SeverData.ServerIP
// para.BackUpServerIP = cfig.SeverData.BackUpServerIP
// para.ComPackets = make(chan Compacket, 600)
// para.Sender.InitPara()
// para.Sender.ReConnectSocket = para.Sender_ReConnectSocket
// // var Reader FlxNetCCUCmdReader
// para.Reader.InitPara()
// para.Reader.InitCoon(para.NetSocket, para.BackUpNetSocket)
// para.Reader.InvokeOnReviceData = para.Reader_OnDataReciveEventHandler
// para.StartUDP()
// para.InvokeDeviceEventHandler = OnDeviceEventHandlers
// serveradd := "192.168.8.108" + ":" + strconv.Itoa(9667)
serveradd := para.ServerIP + ":" + strconv.Itoa(para.ServerPort)
tcpAddr, err := net.ResolveTCPAddr("tcp4", serveradd)
if err != nil {

@ -1263,7 +1263,7 @@ func CongressStart(IsStart bool, AgID string, ServerIP string) {
FLXNetConnect.StartTCP(2)
} else {
if ServerIP == CFLXCfig.SeverData.ServerIP {
FLXNetConnect.StartTCP(0)
// FLXNetConnect.StartTCP(0)
} else if ServerIP == CFLXCfig.SeverData.BackUpServerIP {
FLXNetConnect.StartTCP(1)
}
@ -1310,7 +1310,7 @@ func DisposeContent() {
localcache.AllPerson = nil
localcache.Allperpiccontent = make([]map[string]interface{}, 0)
localcache.LastCardTime = make(map[string]time.Time, 0)
FLXNetworkController.UnSendToServerData = make([]FLXNetworkController.CustomMessage, 0)
FLXNetworkController.UnSendToServerData = make([]FLXNetworkController.Message, 0)
}
// 开始报到
@ -1516,6 +1516,17 @@ func OnDeviceEventHandler(eventSource FLXDevice.EventArgSource, eventType FLXDev
localcache.OnChangeProcess()
CheckInStart()
}
//测试 开始会议后直接开始报到 看看 TAO能不能接收到
// if localcache.CurrentAgenda.Ag_Name == "" {
// GetAgenda(CurrentSelectAgendaID)
// }
// localcache.CurrentScreenSessionStatus = Common.SessionStatus_StartReport
// CrrentCongressStatus = 1
// OpenDevice()
// CheckInStart()
// localcache.OnChangeProcess()
}
//结束会议

Loading…
Cancel
Save