跳转到内容

OnDisconnect

title: OnDisconnect


离线事件是云端与客户端断开连接时自动触发的事件。 断开连接包括客户端主动断开连接,或者意外的网络中断。触发事件即执行特定的数据操作,它支持离线写入,更新和删除数据方法。详细使用请参考:完整指南-离线功能。

当客户端断开连接(例如:关闭浏览器、跳转到一个新的页面、本地的网络问题等)后写入数据,此操作会先清空指定节点再写入新的数据。

set(value)

参数名 说明
value Object
Array
String
Number
Boolean
null
连接中断后写入当前位置的值。

wilddog.Promise<Void>

var disconnectRef = wilddog.sync().ref("disconnectMessage");
disconnectRef.onDisconnect().set('I disconnected!')
.then(function(){
console.info('disconnect operation has been executed.');
})
.catch(function(err){
console.info('disconnect operation is failed.');
});

注意:

`onDisconnect()` 设置的离线操作只会触发一次。
如需每次离线时都执行 `set()` 方法,则需要 [监听连接状态](/sync/Web/guide/offline-capabilities.html#监听连接状态),在连接建立成功后都通过 `onDisconnect().set()` 设置想要执行的写入操作。

update(value)

当客户端断开连接(例如:关闭浏览器、跳转到一个新的页面、本地的网络问题等)后更新指定子节点。

参数名 说明
value Object 类型
包含要写入当前位置子节点的集合。

wilddog.Promise<Void>

var disconnectRef = wilddog.sync().ref("disconnectMessage");
disconnectRef.onDisconnect().update({"message":'I disconnected!'})
.then(function(){
console.info('disconnect operation has been executed.');
})
.catch(function(err){
console.info('disconnect operation is failed.');
});

注意:

`onDisconnect()` 设置的离线操作只会触发一次。
如需每次离线时都执行 `update()` 方法,则需要 [监听连接状态](/sync/Web/guide/offline-capabilities.html#监听连接状态),在连接建立成功后都通过 `onDisconnect().update()` 设置想要执行的更新操作。

remove()

当客户端断开连接(例如:关闭浏览器、跳转到一个新的页面、本地的网络问题等)后移除当前节点的数据。

wilddog.Promise<Void>

var disconnectRef = wilddog.sync().ref("disconnectMessage");
disconnectRef.onDisconnect().remove()
.then(function(){
console.info('disconnect operation has been executed.');
})
.catch(function(err){
console.info('disconnect operation is failed.');
});

注意:

`onDisconnect()` 设置的离线操作只会触发一次。
如需每次离线时都执行 remove() 方法,则需要 [监听连接状态](/sync/Web/guide/offline-capabilities.html#监听连接状态),在连接建立成功后都通过 `onDisconnect().remove()` 设置想要执行的删除操作。

当客户端断开连接后(关闭浏览器、跳转到一个新的页面、本地的网络问题等),指定的数据和其优先级会被写入当前位置。

setWithPriority(value, priority)

当客户端断开连接(例如:关闭浏览器、跳转到一个新的页面、本地的网络问题等)后更新指定子节点。

参数名 说明
value Object
String
Number
Boolean
null
将被写入的值。
priority String
Number(non-null)
优先级数据,节点的优先级是默认排序的依据。

wilddog.Promise<Void>

var disconnectRef = wilddog.sync().ref("disconnectMessage");
disconnectRef.onDisconnect().setWithPriority('I disconnected', 10)
.then(function(){
console.info('disconnect operation has been executed.');
})
.catch(function(err){
console.info('disconnect operation is failed.');
});

注意:

`onDisconnect()` 设置的离线操作只会触发一次。如果你想在每次断线时都执行 `setWithPriority()` 方法,需要在每次 [监听](/sync/Web/guide/offline-capabilities.html#监听连接状态) 连接建立成功后都通过 `onDisconnect().setWithPriority()` 设置想要执行的写入操作。

cancel()

取消所有未生效的离线事件。

Void

var disconnectRef = wilddog.sync().ref("disconnectMessage");
// 之前所有注册在该节点下的离线事件都将取消
disconnectRef.onDisconnect().cancel();