From 49499e13b6d786928b6813681283618a742a063c Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sun, 11 Jun 2023 23:29:09 +0800 Subject: [PATCH] :art: Data synchronization supports the multi-kernel online perception https://github.com/siyuan-note/siyuan/issues/8518 --- kernel/model/conf.go | 2 +- kernel/model/sync.go | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/kernel/model/conf.go b/kernel/model/conf.go index 38baad500..14532bb67 100644 --- a/kernel/model/conf.go +++ b/kernel/model/conf.go @@ -509,7 +509,7 @@ func Close(force bool, execInstallPkg int) (exitCode int) { time.Sleep(4 * time.Second) } logging.LogInfof("exited kernel") - webSocketConn.Close() + closeSyncWebSocket() util.WebSocketServer.Close() go func() { time.Sleep(500 * time.Millisecond) diff --git a/kernel/model/sync.go b/kernel/model/sync.go index 50a4aeef0..08ace373a 100644 --- a/kernel/model/sync.go +++ b/kernel/model/sync.go @@ -372,6 +372,12 @@ func SetSyncEnable(b bool) { func SetSyncPerception(b bool) { Conf.Sync.Perception = b Conf.Save() + + if b { + connectSyncWebSocket() + } else { + closeSyncWebSocket() + } return } @@ -641,6 +647,16 @@ var ( onlineKernelsLock = sync.Mutex{} ) +func closeSyncWebSocket() { + webSocketConnLock.Lock() + defer webSocketConnLock.Unlock() + + if nil != webSocketConn { + webSocketConn.Close() + webSocketConn = nil + } +} + func connectSyncWebSocket() { defer logging.Recover()