Cybersecurity-Projects/PROJECTS/advanced/monitor-the-situation-dashb.../backend/internal/ws/envelope.go

35 lines
622 B
Go

// ©AngelaMos | 2026
// envelope.go
package ws
import (
"bytes"
"encoding/json"
"time"
)
func EncodeEnvelope(channel string, payload []byte) ([]byte, error) {
var buf bytes.Buffer
buf.WriteString(`{"ch":`)
chRaw, err := json.Marshal(channel)
if err != nil {
return nil, err
}
buf.Write(chRaw)
buf.WriteString(`,"data":`)
if len(payload) == 0 {
buf.WriteString("null")
} else {
buf.Write(payload)
}
buf.WriteString(`,"ts":`)
tsRaw, err := json.Marshal(time.Now().UTC().Format(time.RFC3339Nano))
if err != nil {
return nil, err
}
buf.Write(tsRaw)
buf.WriteByte('}')
return buf.Bytes(), nil
}