Subscriptions
Note: Subscriptions require a WebSocket connection. Connect to
/graphqlusing thegraphql-wsprotocol.
Basic Subscription
Subscribe to new records:
subscription {
xyzStatusphereStatusCreated {
uri
status
createdAt
}
}
Field Selection
Request only the fields you need:
subscription {
xyzStatusphereStatusCreated {
status
}
}
Response:
{
"data": {
"xyzStatusphereStatusCreated": {
"status": "🚀"
}
}
}
Named Subscription
subscription OnNewStatus {
xyzStatusphereStatusCreated {
uri
status
actorHandle
}
}
Subscription Types
Each collection has three subscription fields:
{collection}Created- Fires when a new record is created{collection}Updated- Fires when a record is updated{collection}Deleted- Fires when a record is deleted
Examples
# New status created
subscription {
xyzStatusphereStatusCreated {
uri
status
}
}
# Status updated
subscription {
xyzStatusphereStatusUpdated {
uri
status
}
}
# Status deleted
subscription {
xyzStatusphereStatusDeleted {
uri
}
}
With Joins
Subscriptions support joins like queries:
subscription {
xyzStatusphereStatusCreated {
uri
status
appBskyActorProfileByDid {
displayName
avatar {
url
}
}
}
}
Response:
{
"data": {
"xyzStatusphereStatusCreated": {
"uri": "at://did:plc:abc123/xyz.statusphere.status/3m4vk4wi",
"status": "🎉 Just shipped!",
"appBskyActorProfileByDid": {
"displayName": "Alice",
"avatar": {
"url": "https://cdn.bsky.app/img/avatar/plain/did:plc:abc123/bafyrei..."
}
}
}
}
}
WebSocket Protocol
1. Connect
ws://localhost:8080/graphql
2. Initialize
{
"type": "connection_init"
}
3. Subscribe
{
"id": "1",
"type": "subscribe",
"payload": {
"query": "subscription { xyzStatusphereStatusCreated { uri status } }"
}
}
4. Receive Events
{
"id": "1",
"type": "next",
"payload": {
"data": {
"xyzStatusphereStatusCreated": {
"uri": "at://...",
"status": "Hello!"
}
}
}
}
5. Unsubscribe
{
"id": "1",
"type": "complete"
}