The server supports publishing SSE messages via HTTP POST to the URL path configured by the --pub-path=<path> option (defaults to /sse).
It accepts data encoded as both application/x-www-form-urlencoded and application/json. The specific content type must always be indicated in the request or it will be rejected.
curl \
--include \
--request POST \
--header "content-type: application/json" \
--data-raw '{"data": "Hello World"}' \
127.0.0.1:1983/sse
A successful publish will respond with a 202 Accepted status code and an application/json body with the current number of subscribers and the number of messages in the queue that have not been delivered to all subscribers (yet).
HTTP/1.1 202 Accepted
content-type: application/json
content-length: 31
{"queued": 1, "subscribers": 1}
The size of the internal message queue can be configured with the --capacity=<size> option. It defaults to 256.
All fields are optional but at least one must be provided or the message will be rejected with a 400 Bad Request error.
{
"id": "some-id",
"event": "custom-event",
"data": "Some data",
"comment": ["First comment", "Second comment"]
}
Equivalent message as application/x-www-form-urlencoded:
id=some-id
&event=custom-event
&data=Some%20data
&comment=First%20comment
&comment=Second%20comment
data containing newlines is automatically split across multiple data: lines in the SSE message.