Swiftpack.co - supabase-community/realtime-swift as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by supabase-community.
supabase-community/realtime-swift 0.0.2
A Swift client for Supabase Realtime server.
⭐️ 49
🕓 1 year ago
iOS macOS watchOS tvOS macCatalyst
.package(url: "https://github.com/supabase-community/realtime-swift.git", from: "0.0.2")

realtime-swift

[!WARNING]
This repository is deprecated and it was moved to the monorepo. Repository will remain live to support old versions of the library, but any new updates MUST be done on the monorepo.

Listens to changes in a PostgreSQL Database and via websockets.

A Swift client for Supabase Realtime server.

Usage

Creating a Socket connection

You can set up one connection to be used across the whole app.

import Realtime

var client = RealtimeClient(endPoint: "https://yourcompany.supabase.co/realtime/v1", params: ["apikey": "public-anon-key"])
client.connect()

Socket Hooks

client.onOpen {
    print("Socket opened.")
}

client.onError { error in
    print("Socket error: ", error.localizedDescription)
}

client.onClose {
    print("Socket closed")
}

Disconnect the socket

Call disconnect() on the socket:

client.disconnect()

Subscribe to topics

You can subscribe to all topic, or to specific schema parts.

  • Listen to all database changes:
let allChanges = client.channel(.all)
allChanges.on(.all) { message in
    print(message)
}
allChanges.subscribe()
// ...
allChanges.unsubscribe()
allChanges.off(.all)
  • Listen to a specific schema's changes:
let allPublicInsertChanges = client.channel(.schema("public"))
allPublicInsertChanges.on(.insert) { message in
    print(message)
}
allPublicInsertChanges.subscribe()
// ...
allPublicInsertChanges.unsubscribe()
allPublicInsertChanges.off(.insert)
  • Listen to a specific table's changes:
let allUsersUpdateChanges = client.channel(.table("users", schema: "public"))
allUsersUpdateChanges.on(.update) { message in
    print(message)
}
allUsersUpdateChanges.subscribe()
// ...
allUsersUpdateChanges.unsubscribe()
allUsersUpdateChanges.off(.update)
  • Listen to a specific column's value changes:
let allUserId99Changes = client.channel(.column("id", value: "99", table: "users", schema: "public"))
allUserId99Changes.on(.all){ message in
    print(message)
}
allUserId99Changes.subscribe()
// ...
allUserId99Changes.unsubscribe()
allUserId99Changes.off(.all)

Credits

License

This repo is licensed under MIT.

GitHub

link
Stars: 49
Last commit: 21 weeks ago
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Release Notes

0.0.2
1 year ago

What's Changed

Full Changelog: https://github.com/supabase-community/realtime-swift/compare/0.0.1...0.0.2

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics