feat(websocket): add deduplication support to PeriodicWrite function and introduce DeepEqual utility

This commit is contained in:
yusing
2025-09-04 06:28:14 +08:00
parent 2c6690b2d0
commit 0814ca4451
2 changed files with 247 additions and 2 deletions

View File

@@ -7,14 +7,16 @@ import (
apitypes "github.com/yusing/go-proxy/internal/api/types"
)
func PeriodicWrite(c *gin.Context, interval time.Duration, get func() (any, error)) {
type DeduplicateFunc func(last, current any) bool
func PeriodicWrite(c *gin.Context, interval time.Duration, get func() (any, error), deduplicate ...DeduplicateFunc) {
manager, err := NewManagerWithUpgrade(c)
if err != nil {
c.Error(apitypes.InternalServerError(err, "failed to upgrade to websocket"))
return
}
defer manager.Close()
err = manager.PeriodicWrite(interval, get)
err = manager.PeriodicWrite(interval, get, deduplicate...)
if err != nil {
c.Error(apitypes.InternalServerError(err, "failed to write to websocket"))
}