mirror of
https://github.com/fosrl/newt.git
synced 2026-03-04 01:36:44 +00:00
@@ -175,19 +175,29 @@ func (c *Client) SendMessage(messageType string, data interface{}) error {
|
|||||||
func (c *Client) SendMessageInterval(messageType string, data interface{}, interval time.Duration) (stop func()) {
|
func (c *Client) SendMessageInterval(messageType string, data interface{}, interval time.Duration) (stop func()) {
|
||||||
stopChan := make(chan struct{})
|
stopChan := make(chan struct{})
|
||||||
go func() {
|
go func() {
|
||||||
|
count := 0
|
||||||
|
maxAttempts := 10
|
||||||
|
|
||||||
err := c.SendMessage(messageType, data) // Send immediately
|
err := c.SendMessage(messageType, data) // Send immediately
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("Failed to send initial message: %v", err)
|
logger.Error("Failed to send initial message: %v", err)
|
||||||
}
|
}
|
||||||
|
count++
|
||||||
|
|
||||||
ticker := time.NewTicker(interval)
|
ticker := time.NewTicker(interval)
|
||||||
defer ticker.Stop()
|
defer ticker.Stop()
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-ticker.C:
|
case <-ticker.C:
|
||||||
|
if count >= maxAttempts {
|
||||||
|
logger.Info("SendMessageInterval timed out after %d attempts for message type: %s", maxAttempts, messageType)
|
||||||
|
return
|
||||||
|
}
|
||||||
err = c.SendMessage(messageType, data)
|
err = c.SendMessage(messageType, data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("Failed to send message: %v", err)
|
logger.Error("Failed to send message: %v", err)
|
||||||
}
|
}
|
||||||
|
count++
|
||||||
case <-stopChan:
|
case <-stopChan:
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user