RealtimeKit Stores API 允许您创建多个实时键值对存储。用户可以订阅存储中的更改并接收实时更新。在 会话(session) 处于活动状态期间,数据将被持续存储。
This page is not available for the Flutterplatform.
您可以创建一个实时存储(更改将与其他用户同步):
| 参数 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
name |
string | 存储的名称 | 是 |
创建存储:
const stores = useRealtimeKitSelector((m) => m.stores);
const store = stores.create('myStore');const store = meeting.stores.create('myStore');const store = meeting.stores.create('myStore');val meeting = RealtimeKitMeetingBuilder.build(activity)
val store = meeting.stores.create("myStore")let meeting = RealtimeKitiOSClientBuilder().build()
let store = meeting.stores.create(name: "myStore")Flutter SDK 目前不支持此功能
您可以添加、更新或删除存储中的条目:
| 参数 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
key |
string | 在存储中用于保存/更新值的唯一标识符 | 是 |
value |
StoreValue | 可与键对应存储的值 | 是 |
type StoreValue = string | number | object | array;const stores = useRealtimeKitSelector((m) => m.stores.stores);
const store = stores.get("myStore");
await store.set("user", { name: "John Doe" });
await store.update("user", { age: 34 }); // { name: 'John Doe', age: 34 }
await store.delete("user");type StoreValue = string | number | object | array;const { stores } = meeting.stores;
const store = stores.get("myStore");
await store.set("user", { name: "John Doe" });
await store.update("user", { age: 34 }); // { name: 'John Doe', age: 34 }
await store.delete("user");type StoreValue = string | number | object | array;const { stores } = meeting.stores;
const store = stores.get("myStore");
await store.set("user", { name: "John Doe" });
await store.update("user", { age: 34 }); // { name: 'John Doe', age: 34 }
await store.delete("user");val store = meeting.stores.get("myStore")
store.set("user", mapOf("name" to "John Doe"))let store = meeting.stores.get(name: "myStore")
store.set("user", ["name": "John Doe"])您可以在存储的键上绑定事件监听器,当值发生变化时会触发这些监听器。
const stores = useRealtimeKitSelector((m) => m.stores.stores);
const store = stores.get('myStore');
store.subscribe('key', (data) => {
console.log(data);
});
// subscribe to all keys of a store
store.subscribe('\*', (data) => {
console.log(data);
});
store.unsubscribe('key');const { stores } = meeting.stores;
const store = stores.get('myStore');
store.subscribe('key', (data) => {
console.log(data);
});
// subscribe to all keys of a store
store.subscribe('\*', (data) => {
console.log(data);
});
store.unsubscribe('key');const { stores } = meeting.stores;
const store = stores.get('myStore');
store.subscribe('key', (data) => {
console.log(data);
});
// subscribe to all keys of a store
store.subscribe('\*', (data) => {
console.log(data);
});
store.unsubscribe('key');val store = meeting.stores.create("myStore")
val keyChangeCallback = { key: String, value: Any? ->
println(value)
}
store.subscribe("key", keyChangeCallback)
// Subscribe to all keys
store.subscribe(RtkStore.WILDCARD_KEY) { key, value ->
println(value)
}
store.unsubscribe("key", keyChangeCallback)let store = meeting.stores.create(name: "myStore")
let keyChangeCallback: ((String, (Any?)) -> Void) = { key, value in
print(value ?? "null")
}
store.subscribe(key: "key", onChange: keyChangeCallback)
// Subscribe to all keys
store.subscribe(key: RtkStore.Companion().WILDCARD_KEY) { key, value in
print(value ?? "null")
}
store.unsubscribe(key: "key", onChange: keyChangeCallback)您可以获取存储在存储中的数据:
const stores = useRealtimeKitSelector((m) => m.stores.stores);
const store = stores.get('myStore');
// fetch value for a specific key
const data = store.get('key');
// fetch all the data in the store
const data = store.getAll();const { stores } = meeting.stores;
const store = stores.get('myStore');
// fetch value for a specific key
const data = store.get('key');
// fetch all the data in the store
const data = store.getAll();const { stores } = meeting.stores;
const store = stores.get('myStore');
// fetch value for a specific key
const data = store.get('key');
// fetch all the data in the store
const data = store.getAll();val store = meeting.stores.create("myStore")
// fetch value for a specific key
val data = store.get("key")
// fetch all the data in the store
val data = store.getAll()let store = meeting.stores.create(name: "myStore")
// fetch value for a specific key
store.get(key: "key")
// fetch all the data in the store
store.getAll()