realtime-swift

警告

警告:此仓库已弃用,并已迁移到 monorepo。仓库将保持可用以支持旧版本的库,但任何新的更新必须在 monorepo 上完成。

监听 PostgreSQL 数据库和通过 websockets 的更改。

用于 Supabase Realtime 服务器的 Swift 客户端。

用法

创建 Socket 连接

您可以设置一个连接,在整个应用程序中使用。

import Realtime

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

Socket 钩子

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

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

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

断开 socket 连接

在 socket 上调用 disconnect()

client.disconnect()

订阅主题

您可以订阅所有主题,或特定模式部分。

let allChanges = client.channel(.all)
allChanges.on(.all) { message in
    print(message)
}
allChanges.subscribe()
// ...
allChanges.unsubscribe()
allChanges.off(.all)
let allPublicInsertChanges = client.channel(.schema("public"))
allPublicInsertChanges.on(.insert) { message in
    print(message)
}
allPublicInsertChanges.subscribe()
// ...
allPublicInsertChanges.unsubscribe()
allPublicInsertChanges.off(.insert)
let allUsersUpdateChanges = client.channel(.table("users", schema: "public"))
allUsersUpdateChanges.on(.update) { message in
    print(message)
}
allUsersUpdateChanges.subscribe()
// ...
allUsersUpdateChanges.unsubscribe()
allUsersUpdateChanges.off(.update)
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)

鸣谢

许可

此仓库根据 MIT 许可获得许可。