This commit is contained in:
2025-08-07 10:18:28 +02:00
parent 170b5c7912
commit d988e50f0d
7 changed files with 39 additions and 27 deletions

View File

@@ -7,6 +7,7 @@ import (
"os"
"strings"
"sync"
"time"
log "github.com/sirupsen/logrus"
)
@@ -16,29 +17,31 @@ var (
)
type TCPServer struct {
Address string
Port string
Clients map[net.Conn]bool
Mutex *sync.Mutex
LogWriter *bufio.Writer
Reader *bufio.Reader
Writer *bufio.Writer
Conn net.Conn
Listener net.Listener
MsgChan chan string
CmdChan chan string
Log *log.Logger
Config *Config
Address string
Port string
Clients map[net.Conn]bool
Mutex *sync.Mutex
LogWriter *bufio.Writer
Reader *bufio.Reader
Writer *bufio.Writer
Conn net.Conn
Listener net.Listener
MsgChan chan string
CmdChan chan string
Log *log.Logger
Config *Config
MessageSent int
}
func NewTCPServer(address string, port string) *TCPServer {
return &TCPServer{
Address: address,
Port: port,
Clients: make(map[net.Conn]bool),
MsgChan: make(chan string, 100),
CmdChan: make(chan string),
Mutex: new(sync.Mutex),
Address: address,
Port: port,
Clients: make(map[net.Conn]bool),
MsgChan: make(chan string, 100),
CmdChan: make(chan string),
Mutex: new(sync.Mutex),
MessageSent: 0,
}
}
@@ -120,10 +123,17 @@ func (s *TCPServer) Write(message string) (n int, err error) {
func (s *TCPServer) broadcastMessage(message string) {
s.Mutex.Lock()
defer s.Mutex.Unlock()
for client := range s.Clients {
_, err := client.Write([]byte(message + "\r\n"))
if err != nil {
fmt.Println("Error while sending message to clients:", client.RemoteAddr())
if len(s.Clients) > 0 {
if s.MessageSent == 0 {
time.Sleep(3 * time.Second)
s.MessageSent += 1
}
for client := range s.Clients {
_, err := client.Write([]byte(message + "\r\n"))
s.MessageSent += 1
if err != nil {
fmt.Println("Error while sending message to clients:", client.RemoteAddr())
}
}
}
}