Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2022-10-26 12:02:58 +08:00
commit cad0f1030d
5 changed files with 26 additions and 13 deletions

View file

@ -361,8 +361,6 @@
})
})
})
// 防止内核长时间不用被回收
new WebSocket(`${window.location.protocol === "https:" ? "wss" : "ws"}://${window.location.host}/ws?app=siyuan&id=init`);
</script>
</body>
</html>

View file

@ -551,8 +551,8 @@ const initKernel = (initData) => {
writeLog('booted kernel process [pid=' + kernelProcessPid + ']')
kernelProcess.on('close', (code) => {
writeLog(`kernel exited with code [${code}]`)
if (0 !== code) {
writeLog(`kernel exited with code [${code}]`)
switch (code) {
case 20:
showErrorWindow('⚠️ 数据库被锁定 The database is locked',

View file

@ -495,7 +495,7 @@
}, 6000)
})
}
// 防止内核长时间不用被回收
// 用于授权页保持连接,避免非常驻内存内核自动退出 https://github.com/siyuan-note/insider/issues/1099
new WebSocket(`${window.location.protocol === "https:" ? "wss" : "ws"}://${window.location.host}/ws?app=siyuan&id=auth`);
</script>
</body>

View file

@ -32,16 +32,26 @@ func HookResident() {
}
for range time.Tick(time.Second * 30) {
if 0 == util.CountSessions() {
time.Sleep(time.Second * 7)
if 0 == util.CountSessions() {
logging.LogInfof("no active session, exit kernel process now")
Close(false, 1)
}
if makeSureSessionEmpty() {
logging.LogInfof("no active session, exit kernel process now")
Close(false, 1)
}
}
}
func makeSureSessionEmpty() bool {
count := 0
for i := 0; i < 7; i++ {
count = util.CountSessions()
//logging.LogDebugf("session count [%d]", count)
if 0 < count {
return false
}
time.Sleep(time.Second * 1)
}
return true
}
func HandleSignal() {
c := make(chan os.Signal)
signal.Notify(c, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGTERM)

View file

@ -308,7 +308,7 @@ func serveWebSocket(ginServer *gin.Engine) {
})
util.WebSocketServer.HandlePong(func(session *melody.Session) {
//model.Logger.Debugf("pong")
//logging.LogInfof("pong")
})
util.WebSocketServer.HandleConnect(func(s *melody.Session) {
@ -337,9 +337,14 @@ func serveWebSocket(ginServer *gin.Engine) {
}
}
if !authOk {
// 用于授权页保持连接,避免非常驻内存内核自动退出 https://github.com/siyuan-note/insider/issues/1099
authOk = strings.Contains(s.Request.RequestURI, "/ws?app=siyuan&id=auth")
}
if !authOk {
s.CloseWithMsg([]byte(" unauthenticated"))
//logging.LogWarnf("closed a unauthenticated session [%s]", util.GetRemoteAddr(s))
//logging.LogWarnf("closed an unauthenticated session [%s]", util.GetRemoteAddr(s))
return
}
@ -351,7 +356,7 @@ func serveWebSocket(ginServer *gin.Engine) {
util.WebSocketServer.HandleDisconnect(func(s *melody.Session) {
util.RemovePushChan(s)
//sessionId, _ := s.Get("id")
//model.Logger.Debugf("ws [%s] disconnected", sessionId)
//logging.LogInfof("ws [%s] disconnected", sessionId)
})
util.WebSocketServer.HandleError(func(s *melody.Session, err error) {