From fdd642425995dc0911c3c52aa820bdd169e48f04 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Thu, 5 Jan 2023 11:18:24 +0800 Subject: [PATCH] :recycle: https://github.com/siyuan-note/siyuan/issues/4567 --- app/electron/main.js | 65 ++++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/app/electron/main.js b/app/electron/main.js index 999b650b7..6a82f72dd 100644 --- a/app/electron/main.js +++ b/app/electron/main.js @@ -364,36 +364,6 @@ const boot = () => { } const initKernel = (workspace, lang) => { - const getKernelPort = async () => { - // TODO if (isDevEnv) { - // writeLog("got kernel port [" + kernelPort + "]") - // return kernelPort - // } - - // 改进桌面端拉起内核 https://github.com/siyuan-note/siyuan/issues/6894 - const getAvailablePort = (port = kernelPort) => { - // https://gist.github.com/mikeal/1840641 - let tryGetPortCount = 0 - 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')) - } - - kernelPort = await getAvailablePort() - writeLog('got kernel available port [' + kernelPort + ']') - return kernelPort - } return new Promise(async (resolve) => { bootWindow = new BrowserWindow({ width: screen.getPrimaryDisplay().size.width / 2, @@ -417,9 +387,37 @@ const initKernel = (workspace, lang) => { resolve(false) return } + // 改进桌面端拉起内核 https://github.com/siyuan-note/siyuan/issues/6894 + const getAvailablePort = (port) => { + // https://gist.github.com/mikeal/1840641 + let tryGetPortCount = 0 + 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() + return + } + server.listen(++port) + }).on('listening', () => { + writeLog('got kernel port [' + port + ']') + server.close(() => resolve(port)) + }).listen(port, '127.0.0.1')) + } - const availablePort = await getKernelPort() - const cmds = ['--port', availablePort, '--wd', appDir] + if (isDevEnv) { + writeLog('got kernel port [' + kernelPort + ']') + } else { + kernelPort = await getAvailablePort(kernelPort) + } + if (!kernelPort) { + bootWindow.destroy() + resolve(false) + return + } + const cmds = ['--port', kernelPort, '--wd', appDir] // TODO if (isDevEnv) { // cmds.push('--mode', 'dev') // } @@ -444,7 +442,8 @@ const initKernel = (workspace, lang) => { writeLog('booted kernel process [pid=' + kernelProcessPid + ']') kernelProcess.on('close', (code) => { - writeLog(`kernel [pid=${kernelProcessPid}, port=${availablePort}] exited with code [${code}]`) + writeLog( + `kernel [pid=${kernelProcessPid}, port=${kernelPort}] exited with code [${code}]`) if (0 !== code) { switch (code) { case 20: