Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/supabase-community/realtime-swift
A Swift client for Supabase Realtime server.
https://github.com/supabase-community/realtime-swift
Last synced: 5 days ago
JSON representation
A Swift client for Supabase Realtime server.
- Host: GitHub
- URL: https://github.com/supabase-community/realtime-swift
- Owner: supabase-community
- License: mit
- Created: 2021-05-31T00:36:22.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-11-20T17:53:19.000Z (12 months ago)
- Last Synced: 2024-11-05T04:29:18.879Z (9 days ago)
- Language: Swift
- Homepage:
- Size: 84 KB
- Stars: 50
- Watchers: 7
- Forks: 13
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# `realtime-swift`
> [!WARNING]
> This repository is deprecated and it was moved to the [monorepo](https://github.com/supabase-community/supabase-swift).
> 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](https://github.com/supabase/realtime-swift) server.
## Usage
### Creating a Socket connection
You can set up one connection to be used across the whole app.
```swift
import Realtimevar client = RealtimeClient(endPoint: "https://yourcompany.supabase.co/realtime/v1", params: ["apikey": "public-anon-key"])
client.connect()
```**Socket Hooks**
```swift
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:
```swift
client.disconnect()
```### Subscribe to topics
You can subscribe to all topic, or to specific schema parts.
* Listen to all database changes:
```swift
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:
```swift
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:
```swift
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:
```swift
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
- https://github.com/supabase/realtime-js
- https://github.com/davidstump/SwiftPhoenixClient## License
This repo is licensed under MIT.