---
name: SSEEvent
lang: go
domain: infra
version: "1.0.0"
algebraic: product
definition: |
  type SSEEvent struct {
      Event string `json:"event"`
      Data  string `json:"data"`
      ID    string `json:"id"`
      Retry int    `json:"retry"`
  }
description: "Evento Server-Sent Events segun la spec W3C. Campos opcionales: si Event esta vacio se envia solo data, si ID esta vacio no se incluye campo id, Retry en ms (0 = omitir y dejar el default del browser ~3000ms)."
tags: [sse, event, server-sent-events, infra, realtime]
uses_types: []
file_path: "functions/infra/sse_event.go"
---

## Ejemplo

```go
ev := SSEEvent{
    Event: "metrics_update",
    ID:    "42",
    Data:  `{"cpu": 23.4, "mem": 87.1}`,
}
SSESend(w, ev)
```

Wire format generado:

```
event: metrics_update
id: 42
data: {"cpu": 23.4, "mem": 87.1}

```

## Notas

Tipo producto con campos opcionales. `Data` puede contener saltos de linea — el formateador los traduce a multiples lineas `data:` segun la spec. `Retry` solo se envia si es > 0; cuando se envia, indica al cliente cuantos ms esperar antes de reconectar.

Para enviar solo un comentario keepalive (no un evento), no se usa este tipo: se escribe `: keepalive\n\n` directamente al writer.
