fix(websocket): errors in saving client info during ping ping
This commit is contained in:
@@ -35,22 +35,10 @@ func SocketHandler(c *gin.Context, channels map[string]*Channel) {
|
||||
}
|
||||
//defer conn.Close()
|
||||
|
||||
// Set ping handler on the connection
|
||||
conn.SetPingHandler(func(appData string) error {
|
||||
log.Println("Received ping:", appData)
|
||||
conn.SetReadDeadline(time.Now().Add(60 * time.Second)) // Reset read timeout
|
||||
return nil // Return nil to send pong automatically
|
||||
})
|
||||
|
||||
// Optional: Custom pong handler
|
||||
conn.SetPongHandler(func(appData string) error {
|
||||
log.Println("Received pong:", appData)
|
||||
return nil
|
||||
})
|
||||
|
||||
// Create new client
|
||||
client := &Client{
|
||||
Conn: conn,
|
||||
APIKey: "exampleAPIKey",
|
||||
Send: make(chan []byte, 256), // Buffered channel
|
||||
Channels: make(map[string]bool),
|
||||
IPAddress: c.ClientIP(),
|
||||
@@ -73,8 +61,22 @@ func SocketHandler(c *gin.Context, channels map[string]*Channel) {
|
||||
// return
|
||||
// }
|
||||
|
||||
//client.StartHeartbeat()
|
||||
// Cleanup on disconnect
|
||||
// Set handlers
|
||||
conn.SetPingHandler(func(string) error {
|
||||
return nil // Auto-responds with pong
|
||||
})
|
||||
|
||||
conn.SetPongHandler(func(string) error {
|
||||
now := time.Now()
|
||||
client.markActive() // Track last pong time
|
||||
client.lastActive = now
|
||||
client.updateHeartbeat()
|
||||
return nil
|
||||
})
|
||||
|
||||
// Start server-side ping ticker
|
||||
go client.startServerPings()
|
||||
|
||||
defer func() {
|
||||
// Unregister from all channels
|
||||
for channelName := range client.Channels {
|
||||
@@ -96,11 +98,6 @@ func SocketHandler(c *gin.Context, channels map[string]*Channel) {
|
||||
log.Printf("Client disconnected: %s", client.ClientID)
|
||||
}()
|
||||
|
||||
client.Conn.SetPingHandler(func(appData string) error {
|
||||
log.Printf("Custom ping handler for client %s", client.ClientID)
|
||||
return nil
|
||||
})
|
||||
|
||||
// Send welcome message immediately
|
||||
welcomeMsg := map[string]string{
|
||||
"status": "connected",
|
||||
|
||||
Reference in New Issue
Block a user