diff --git a/ElectronNET.API/BridgeSettings.cs b/ElectronNET.API/BridgeSettings.cs index 8bbcf47..2f32157 100644 --- a/ElectronNET.API/BridgeSettings.cs +++ b/ElectronNET.API/BridgeSettings.cs @@ -3,5 +3,6 @@ public static class BridgeSettings { public static string SocketPort { get; set; } + public static string WebPort { get; set; } } } diff --git a/ElectronNET.API/WebHostBuilderExtensions.cs b/ElectronNET.API/WebHostBuilderExtensions.cs index ce60e34..f939a54 100644 --- a/ElectronNET.API/WebHostBuilderExtensions.cs +++ b/ElectronNET.API/WebHostBuilderExtensions.cs @@ -13,12 +13,16 @@ namespace ElectronNET.API { BridgeSettings.SocketPort = argument.ToUpper().Replace("/ELECTRONPORT=", ""); Console.WriteLine("Use Electron Port: " + BridgeSettings.SocketPort); + } else if(argument.ToUpper().Contains("ELECTRONWEBPORT")) + { + BridgeSettings.WebPort = argument.ToUpper().Replace("/ELECTRONWEBPORT=", ""); } } if(IsElectronActive()) { - builder.UseContentRoot(AppDomain.CurrentDomain.BaseDirectory); + builder.UseContentRoot(AppDomain.CurrentDomain.BaseDirectory) + .UseUrls("http://0.0.0.0:" + BridgeSettings.WebPort); } return builder; diff --git a/ElectronNET.Host/main.js b/ElectronNET.Host/main.js index aaae30e..771106b 100644 --- a/ElectronNET.Host/main.js +++ b/ElectronNET.Host/main.js @@ -2,12 +2,11 @@ const { app, BrowserWindow, Notification } = require('electron'); const fs = require('fs'); const path = require('path'); const process = require('child_process').spawn; -let io, window, apiProcess; - -const portfinder = require('portfinder'); +const portfinder = require('detect-port'); +let io, window, apiProcess, loadURL; app.on('ready', () => { - portfinder.getPort((error, port) => { + portfinder(8000, (error, port) => { startSocketApiBridge(port); }); }); @@ -24,7 +23,7 @@ function startSocketApiBridge(port) { options.show = true; window = new BrowserWindow(options); - window.loadURL('http://localhost:5000'); + window.loadURL(loadURL); window.on('closed', function () { mainWindow = null; @@ -39,18 +38,22 @@ function startSocketApiBridge(port) { }); } -function startAspCoreBackend(port) { - // run server - var binPath = path.join(__dirname, 'bin'); - fs.readdir(binPath, (error, files) => { - const exeFiles = files.filter((name) => name.indexOf('.exe') > -1); - const exeFileName = exeFiles[0]; - const apipath = path.join(binPath, exeFileName); - apiProcess = process(apipath, ['/electronPort=' + port]); +function startAspCoreBackend(electronPort) { + portfinder(8000, (error, electronWebPort) => { + loadURL = `http://localhost:${electronWebPort}` + const arguments = [`/electronPort=${electronPort}`, `/electronWebPort=${electronWebPort}`]; - apiProcess.stdout.on('data', (data) => { - var text = data.toString(); - console.log(`stdout: ${data.toString()}`); + var binPath = path.join(__dirname, 'bin'); + fs.readdir(binPath, (error, files) => { + const exeFiles = files.filter((name) => name.indexOf('.exe') > -1); + const exeFileName = exeFiles[0]; + const apipath = path.join(binPath, exeFileName); + apiProcess = process(apipath, arguments); + + apiProcess.stdout.on('data', (data) => { + var text = data.toString(); + console.log(`stdout: ${data.toString()}`); + }); }); }); } diff --git a/ElectronNET.Host/package-lock.json b/ElectronNET.Host/package-lock.json index 5df9407..6b6832c 100644 --- a/ElectronNET.Host/package-lock.json +++ b/ElectronNET.Host/package-lock.json @@ -18,6 +18,11 @@ "negotiator": "0.6.1" } }, + "address": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", + "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==" + }, "after": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", @@ -59,11 +64,6 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -311,6 +311,15 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "detect-port": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.2.1.tgz", + "integrity": "sha512-2KWLTLsfpi/oYPGNBEniPcFzr1GW/s+Xq/4hJmTQRdE8ULuRwGnRPuVhS/cf+Z4ZEXNo7EO2f6oydHJQd94KMg==", + "requires": { + "address": "1.0.3", + "debug": "2.6.9" + } + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -963,16 +972,6 @@ "pinkie": "2.0.4" } }, - "portfinder": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", - "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", - "requires": { - "async": "1.5.2", - "debug": "2.6.9", - "mkdirp": "0.5.0" - } - }, "pretty-bytes": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", diff --git a/ElectronNET.Host/package.json b/ElectronNET.Host/package.json index c1963d8..4a470e8 100644 --- a/ElectronNET.Host/package.json +++ b/ElectronNET.Host/package.json @@ -10,8 +10,8 @@ "author": "", "license": "ISC", "dependencies": { + "detect-port": "^1.2.1", "electron": "^1.7.8", - "portfinder": "^1.0.13", "socket.io": "^2.0.3" } }