sniffing: full websocket frame recording

This commit is contained in:
ginuerzh
2024-10-19 20:40:07 +08:00
parent 6b932e35bf
commit 41f527aa46
4 changed files with 76 additions and 34 deletions
+19 -8
View File
@@ -557,12 +557,9 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit
errc := make(chan error, 1)
sampleRate := h.WebsocketSampleRate
if sampleRate <= 0 {
if sampleRate == 0 {
sampleRate = sniffing.DefaultSampleRate
}
if sampleRate > sniffing.MaxSampleRate {
sampleRate = sniffing.MaxSampleRate
}
d := time.Duration(1 / sampleRate * 1e9)
go func() {
@@ -570,8 +567,15 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit
*ro2 = *ro
ro = ro2
ticker := time.NewTicker(d)
defer ticker.Stop()
ticker := &time.Ticker{}
if d > 0 {
ticker = time.NewTicker(d)
defer ticker.Stop()
} else {
tc := make(chan time.Time)
close(tc)
ticker.C = tc
}
buf := &bytes.Buffer{}
for {
@@ -603,8 +607,15 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit
*ro2 = *ro
ro = ro2
ticker := time.NewTicker(d)
defer ticker.Stop()
ticker := &time.Ticker{}
if d > 0 {
ticker = time.NewTicker(d)
defer ticker.Stop()
} else {
tc := make(chan time.Time)
close(tc)
ticker.C = tc
}
buf := &bytes.Buffer{}
for {
+19 -10
View File
@@ -42,8 +42,6 @@ const (
MaxBodySize = 1024 * 1024 // 1MB
// DeafultSampleRate is the default websocket sample rate (samples per second).
DefaultSampleRate = 10.0
// MaxSampleRate is the maximum websocket sample rate (samples per second).
MaxSampleRate = 100.0
)
var (
@@ -422,12 +420,9 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit
errc := make(chan error, 1)
sampleRate := h.WebsocketSampleRate
if sampleRate <= 0 {
if sampleRate == 0 {
sampleRate = DefaultSampleRate
}
if sampleRate > MaxSampleRate {
sampleRate = MaxSampleRate
}
d := time.Duration(1 / sampleRate * 1e9)
go func() {
@@ -435,8 +430,15 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit
*ro2 = *ro
ro = ro2
ticker := time.NewTicker(d)
defer ticker.Stop()
ticker := &time.Ticker{}
if d > 0 {
ticker = time.NewTicker(d)
defer ticker.Stop()
} else {
tc := make(chan time.Time)
close(tc)
ticker.C = tc
}
buf := &bytes.Buffer{}
for {
@@ -468,8 +470,15 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit
*ro2 = *ro
ro = ro2
ticker := time.NewTicker(d)
defer ticker.Stop()
ticker := &time.Ticker{}
if d > 0 {
ticker = time.NewTicker(d)
defer ticker.Stop()
} else {
tc := make(chan time.Time)
close(tc)
ticker.C = tc
}
buf := &bytes.Buffer{}
for {