mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-16 17:46:18 +08:00
fix: sync bug
This commit is contained in:
@@ -35,8 +35,8 @@ export abstract class ServiceBaseClass {
|
||||
name: string,
|
||||
callback: (meta: Map<string, any>) => void
|
||||
) {
|
||||
const db = await this.database.getDatabase(workspace);
|
||||
db.history.onPush(name, callback);
|
||||
// const db = await this.database.getDatabase(workspace);
|
||||
// db.history.onPush(name, callback);
|
||||
}
|
||||
|
||||
async onHistoryRevoke(
|
||||
@@ -44,8 +44,8 @@ export abstract class ServiceBaseClass {
|
||||
name: string,
|
||||
callback: (meta: Map<string, any>) => void
|
||||
) {
|
||||
const db = await this.database.getDatabase(workspace);
|
||||
db.history.onPop(name, callback);
|
||||
// const db = await this.database.getDatabase(workspace);
|
||||
// db.history.onPop(name, callback);
|
||||
}
|
||||
|
||||
async undo(workspace: string) {
|
||||
|
||||
@@ -32,7 +32,7 @@ async function _getCurrentToken() {
|
||||
|
||||
const _enabled = {
|
||||
demo: [],
|
||||
AFFiNE: process.env['NX_KECK'] ? ['idb', 'keck'] : ['idb'],
|
||||
AFFiNE: process.env['NX_KECK'] ? ['keck'] : ['idb'],
|
||||
} as any;
|
||||
|
||||
async function _getBlockDatabase(
|
||||
|
||||
@@ -65,6 +65,26 @@ export const registerWebsocket = (
|
||||
|
||||
let websocket: WebSocket | undefined = undefined;
|
||||
|
||||
const broadcastMessage = (buf: ArrayBuffer) => {
|
||||
if (state === WebSocketState.connected) {
|
||||
websocket?.send(buf);
|
||||
}
|
||||
};
|
||||
|
||||
const disconnect = () => {
|
||||
if (websocket != null) {
|
||||
websocket.close();
|
||||
websocket = undefined;
|
||||
state = WebSocketState.disconnected;
|
||||
if (resyncInterval !== 0) {
|
||||
clearInterval(resyncInterval);
|
||||
}
|
||||
clearInterval(checkInterval);
|
||||
}
|
||||
};
|
||||
|
||||
const ret = { broadcastMessage, disconnect };
|
||||
|
||||
_getToken(
|
||||
provider.url,
|
||||
token,
|
||||
@@ -126,15 +146,26 @@ export const registerWebsocket = (
|
||||
if (reconnect <= 0) provider.emit('lost-connection', []);
|
||||
// Start with no reconnect timeout and increase timeout by
|
||||
// using exponential backoff starting with 100ms
|
||||
setTimeout(
|
||||
registerWebsocket,
|
||||
_getTimeout(provider),
|
||||
provider,
|
||||
token,
|
||||
resyncInterval,
|
||||
reconnect > 0 ? reconnect - 1 : 3,
|
||||
protocol
|
||||
);
|
||||
setTimeout(() => {
|
||||
const newRet = registerWebsocket(
|
||||
provider,
|
||||
token,
|
||||
resyncInterval,
|
||||
reconnect > 0 ? reconnect - 1 : 3,
|
||||
protocol
|
||||
);
|
||||
ret.broadcastMessage = newRet.broadcastMessage;
|
||||
ret.disconnect = newRet.disconnect;
|
||||
}, _getTimeout(provider));
|
||||
// setTimeout(
|
||||
// registerWebsocket,
|
||||
// _getTimeout(provider),
|
||||
// provider,
|
||||
// token,
|
||||
// resyncInterval,
|
||||
// reconnect > 0 ? reconnect - 1 : 3,
|
||||
// protocol
|
||||
// );
|
||||
};
|
||||
websocket.onopen = () => {
|
||||
lastMessageReceived = time.getUnixTime();
|
||||
@@ -172,14 +203,24 @@ export const registerWebsocket = (
|
||||
.catch(err => {
|
||||
provider.emit('lost-connection', []);
|
||||
provider.wsUnsuccessfulReconnects++;
|
||||
setTimeout(
|
||||
registerWebsocket,
|
||||
_getTimeout(provider),
|
||||
provider,
|
||||
token,
|
||||
resyncInterval,
|
||||
reconnect > 0 ? reconnect - 1 : 3
|
||||
);
|
||||
setTimeout(() => {
|
||||
const newRet = registerWebsocket(
|
||||
provider,
|
||||
token,
|
||||
resyncInterval,
|
||||
reconnect > 0 ? reconnect - 1 : 3
|
||||
);
|
||||
ret.broadcastMessage = newRet.broadcastMessage;
|
||||
ret.disconnect = newRet.disconnect;
|
||||
}, _getTimeout(provider));
|
||||
// setTimeout(
|
||||
// registerWebsocket,
|
||||
// _getTimeout(provider),
|
||||
// provider,
|
||||
// token,
|
||||
// resyncInterval,
|
||||
// reconnect > 0 ? reconnect - 1 : 3
|
||||
// );
|
||||
});
|
||||
|
||||
let resyncInterval = 0;
|
||||
@@ -206,23 +247,5 @@ export const registerWebsocket = (
|
||||
}
|
||||
}, WEBSOCKET_RECONNECT / 10);
|
||||
|
||||
const broadcastMessage = (buf: ArrayBuffer) => {
|
||||
if (state === WebSocketState.connected) {
|
||||
websocket?.send(buf);
|
||||
}
|
||||
};
|
||||
|
||||
const disconnect = () => {
|
||||
if (websocket != null) {
|
||||
websocket.close();
|
||||
websocket = undefined;
|
||||
state = WebSocketState.disconnected;
|
||||
if (resyncInterval !== 0) {
|
||||
clearInterval(resyncInterval);
|
||||
}
|
||||
clearInterval(checkInterval);
|
||||
}
|
||||
};
|
||||
|
||||
return { broadcastMessage, disconnect };
|
||||
return ret;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user