Skip to content

Socket ​

Listen on address and parse framed payloads as records. Use it for simple network producers that are not HTTP, Kafka, or a cloud queue.

Before you begin ​

  • A free bind address on the Skipprd host (0.0.0.0:9000 or similar).
  • A producer that can connect and send the framing you choose.

Configure ​

python
from skippr import Config, DataSourceSocket, Pipeline

cfg = Config.discover()
src = cfg.data_source(
    "net",
    DataSourceSocket(mode="tcp", address="0.0.0.0:9000", framing="line", format="json"),
)
cfg.pipeline("net", Pipeline(data_source=src))
cfg.save()
bash
skipprd connect data-source socket \
  --pipeline net \
  --name net \
  --mode tcp \
  --address 0.0.0.0:9000 \
  --framing line \
  --format json
yaml
data_sources:
  net:
    Socket:
      mode: tcp
      address: "0.0.0.0:9000"
      framing: line
      format: json

Run skipprd sync (not --once) so the listener stays up.

Options ​

KeyTypeRequired/DefaultDescription
modestringRequiredtcp or udp
addressstringRequiredBind address host:port
framingstringNot setHow messages are split (line, …)
formatstringNot setPayload format
batch_size_bytesintegerNot setMax bytes per batch
batch_size_secondsintegerNot setMax seconds per batch

What gets synced ​

Each framed message becomes a record. Push sources can lose a message that arrived after accept and before the WAL commit — have producers retry. See Exactly-once delivery.

Troubleshooting ​

SymptomFix
Address already in usePick another port, or stop the other listener
No rowsConfirm the producer uses the same mode, port, and framing
Parse errorsMatch format to the payload

Next steps ​