electron app - auto find port

This commit is contained in:
Jan Prochazka
2020-04-10 21:21:57 +02:00
parent ac97344c1e
commit 5030c673e6
12 changed files with 88 additions and 56 deletions

View File

@@ -12,6 +12,7 @@
"cross-env": "^6.0.3",
"eslint": "^6.8.0",
"express": "^4.17.1",
"find-free-port": "^2.0.0",
"fs-extra": "^8.1.0",
"http": "^0.0.0",
"line-reader": "^0.4.0",

View File

@@ -5,14 +5,14 @@
// "uuid": "^3.4.0",
// "uws": "10.148.1"
const processName = process.argv[2];
if (processName && processName.endsWith('Process')) {
const argument = process.argv[2];
if (argument && argument.endsWith('Process')) {
const proc = require('./proc');
const module = proc[processName];
const module = proc[argument];
module.start();
} else {
const main = require('./main');
main.start();
main.start(argument);
}

View File

@@ -4,6 +4,7 @@ const http = require('http');
const cors = require('cors');
const io = require('socket.io');
const fs = require('fs');
const findFreePort = require('find-free-port');
const useController = require('./utility/useController');
const socket = require('./utility/socket');
@@ -15,7 +16,7 @@ const tables = require('./controllers/tables');
const sessions = require('./controllers/sessions');
const jsldata = require('./controllers/jsldata');
function start() {
function start(argument = null) {
console.log('process.argv', process.argv);
const app = express();
@@ -42,7 +43,16 @@ function start() {
});
}
server.listen(3000);
if (argument == '--dynport') {
findFreePort(53911, function (err, port) {
server.listen(port, () => {
console.log(`DbGate API listening on port ${port}`);
process.send({ msgtype: 'listening', port });
});
});
} else {
server.listen(3000);
}
}
module.exports = { start };

View File

@@ -3,6 +3,9 @@
"version": "0.1.0",
"private": true,
"dependencies": {
"@dbgate/datalib": "^0.1.0",
"@dbgate/engines": "^0.1.0",
"@dbgate/sqltree": "^0.1.0",
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.3.2",
"@testing-library/user-event": "^7.1.2",
@@ -21,14 +24,11 @@
"resize-observer-polyfill": "^1.5.1",
"socket.io-client": "^2.3.0",
"styled-components": "^4.4.1",
"uuid": "^3.4.0",
"@dbgate/sqltree": "^0.1.0",
"@dbgate/datalib": "^0.1.0",
"@dbgate/engines": "^0.1.0"
"uuid": "^3.4.0"
},
"scripts": {
"start": "cross-env BROWSER=none PORT=5000 react-scripts start",
"build": "cross-env CI=false react-scripts build",
"build:docker": "cross-env CI=false REACT_APP_API_URL=ORIGIN react-scripts build",
"build:app": "cross-env PUBLIC_URL=. CI=false react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
@@ -47,8 +47,8 @@
]
},
"devDependencies": {
"@fortawesome/fontawesome-free": "^5.12.0",
"@dbgate/types": "^0.1.0",
"@fortawesome/fontawesome-free": "^5.12.0",
"@types/react": "^16.9.17",
"@types/styled-components": "^4.4.2",
"typescript": "^3.7.4"

View File

@@ -1,5 +1,6 @@
import io from 'socket.io-client';
import React from 'react';
import resolveApi from './resolveApi';
const SocketContext = React.createContext(null);
@@ -7,7 +8,7 @@ export function SocketProvider({ children }) {
const [socket, setSocket] = React.useState();
React.useEffect(() => {
// const newSocket = io('http://localhost:3000', { transports: ['websocket'] });
const newSocket = io('http://localhost:3000');
const newSocket = io(resolveApi());
setSocket(newSocket);
}, []);
return <SocketContext.Provider value={socket}>{children}</SocketContext.Provider>;

View File

@@ -1,5 +1,6 @@
import axios from 'axios';
import resolveApi from './resolveApi';
export default axios.create({
baseURL: 'http://localhost:3000',
baseURL: resolveApi(),
});

View File

@@ -0,0 +1,19 @@
export default function resolveApi() {
if (window.require) {
const electron = window.require('electron');
if (electron) {
const port = electron.remote.getGlobal('port');
return `http://localhost:${port}`;
}
}
// eslint-disable-next-line
const apiUrl = process.env.REACT_APP_API_URL;
if (apiUrl) {
if (apiUrl == 'ORIGIN') return window.location.origin;
return apiUrl;
}
return 'http://localhost:3000';
}