Failed to get kernel serve port, please make sure the program has network permissions and is not blocked by firewalls and antivirus software.
')
- bootWindow.destroy()
- resolve(false)
- }
- writeLog("got kernel port [" + kernelPort + "]")
-
let gotVersion = false
let apiData
let count = 0
@@ -698,8 +654,12 @@ const initKernel = (initData) => {
count++
if (14 < count) {
writeLog('get kernel ver failed')
+
+ showErrorWindow('⚠️ 获取内核服务端口失败 Failed to get kernel serve port',
+ 'Failed to get kernel serve port, please make sure the program has network permissions and is not blocked by firewalls and antivirus software.
')
bootWindow.destroy()
resolve(false)
+ return
}
}
}
@@ -861,7 +821,6 @@ app.on('before-quit', (event) => {
})
const {powerMonitor} = require('electron')
-const {build} = require("electron-builder");
powerMonitor.on('suspend', () => {
writeLog('system suspend')
@@ -912,3 +871,43 @@ const isOnline = async () => {
}
}
}
+
+let kernelPort = 6806
+
+const getKernelPort = async () => {
+ if (isDevEnv) {
+ writeLog("got kernel port [" + kernelPort + "]")
+ return kernelPort
+ }
+
+ // 改进桌面端拉起内核 https://github.com/siyuan-note/siyuan/issues/6894
+ kernelPort = await getAvailablePort()
+ writeLog("got kernel available port [" + kernelPort + "]")
+ return kernelPort
+}
+
+let tryGetPortCount = 0
+const getAvailablePort = (port = kernelPort) => {
+ // https://gist.github.com/mikeal/1840641
+
+ const server = net.createServer()
+ return new Promise((resolve, reject) => server
+ .on('error', error => {
+ writeLog(error)
+ if (2048 < ++tryGetPortCount) {
+ writeLog('failed to get available port [tryCount=' + tryGetPortCount + ', port=' + port + ']')
+ reject(error)
+ return
+ }
+ server.listen(++port)
+ })
+ .on('listening', () => {
+ writeLog('found an available port [' + port + ']')
+ server.close(() => resolve(port))
+ })
+ .listen(port, '127.0.0.1'))
+}
+
+const getServer = () => {
+ return "http://" + localhost + ":" + kernelPort
+}
diff --git a/app/package.json b/app/package.json
index 0714db0a5..0d653e804 100644
--- a/app/package.json
+++ b/app/package.json
@@ -1,6 +1,6 @@
{
"name": "SiYuan",
- "version": "2.5.4",
+ "version": "2.5.5",
"description": "Build Your Eternal Digital Garden",
"homepage": "https://b3log.org/siyuan",
"main": "./electron/main.js",
diff --git a/app/pnpm-lock.yaml b/app/pnpm-lock.yaml
index e4326a260..0a258c8a7 100644
--- a/app/pnpm-lock.yaml
+++ b/app/pnpm-lock.yaml
@@ -1928,10 +1928,10 @@ packages:
resolution: {integrity: sha512-m0+M53+HYMzqKxwNQZT143K7WwXEGUy9LY31l8dJphXx2P/FQod615mVbxHyqbDCG4J5bHdWm21qZ0e2DVY6CQ==}
engines: {node: '>=14.0.0'}
dependencies:
+ 7zip-bin: 5.1.1
'@develar/schema-utils': 2.6.5
'@electron/universal': 1.2.1
'@malept/flatpak-bundler': 0.4.0
- 7zip-bin: 5.1.1
async-exit-hook: 2.0.1
bluebird-lst: 1.0.9
builder-util: 23.3.3
@@ -2215,9 +2215,9 @@ packages:
/builder-util/23.3.3:
resolution: {integrity: sha512-MJZlUiq2PY5hjYv9+XNaoYdsITqvLgRDoHSFg/4nzpInbNxNjLQOolL04Zsyp+hgfcbFvMC4h0KkR1CMPHLWbA==}
dependencies:
+ 7zip-bin: 5.1.1
'@types/debug': 4.1.7
'@types/fs-extra': 9.0.13
- 7zip-bin: 5.1.1
app-builder-bin: 4.0.0
bluebird-lst: 1.0.9
builder-util-runtime: 9.0.3
diff --git a/app/src/config/about.ts b/app/src/config/about.ts
index 7b8891ad4..0cbcdc359 100644
--- a/app/src/config/about.ts
+++ b/app/src/config/about.ts
@@ -57,14 +57,6 @@ export const about = {