Skip to content

Commit 78fd624

Browse files
committed
feat(API): run API & Socket Server on same single port
1 parent 6da3a24 commit 78fd624

File tree

7 files changed

+70
-41
lines changed

7 files changed

+70
-41
lines changed

package-lock.json

Lines changed: 34 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@
126126
"enhanced-resolve": "^3.4.1",
127127
"express": "^4.16.2",
128128
"express-session": "^1.15.6",
129+
"express-ws": "^3.0.0",
129130
"extract-text-webpack-plugin": "^3.0.2",
130131
"file-loader": "^1.1.5",
131132
"fs-extra": "^4.0.2",

src/api/index.ts

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ import { initSetup, getAbstruseVersion } from './utils';
1717
import { generateKeys } from './security';
1818
import * as db from './db/migrations';
1919
import chalk from 'chalk';
20+
import * as expressWs from 'express-ws';
2021

2122
const server = new ExpressServer({ port: 6500 });
22-
const socket = new SocketServer({ port: 6501 });
2323

2424
initSetup()
2525
.then(() => db.create())
@@ -32,14 +32,17 @@ initSetup()
3232
};
3333
logger.next(msg);
3434
})
35-
.then(() => {
36-
Observable
37-
.merge(...[server.start(), socket.start(), generateKeys()])
38-
.subscribe(data => {
39-
const msg: LogMessageType = { message: data, type: 'info', notify: false };
40-
logger.next(msg);
41-
}, err => {
42-
const msg: LogMessageType = { message: err, type: 'error', notify: false };
43-
logger.next(msg);
44-
});
45-
});
35+
.then(() =>
36+
server.start().subscribe(app => {
37+
const socket = new SocketServer({ app: expressWs(app) });
38+
39+
Observable
40+
.merge(...[socket.start(), generateKeys()])
41+
.subscribe(data => {
42+
const msg: LogMessageType = { message: data, type: 'info', notify: false };
43+
logger.next(msg);
44+
}, err => {
45+
const msg: LogMessageType = { message: err, type: 'error', notify: false };
46+
logger.next(msg);
47+
});
48+
}));

src/api/server.ts

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export interface ServerConfig {
1414

1515
export interface IExpressServer {
1616
config: ServerConfig;
17-
start(): Observable<string>;
17+
start(): Observable<express.Application>;
1818
}
1919

2020
export const sessionParser = session({
@@ -30,7 +30,7 @@ export class ExpressServer implements IExpressServer {
3030
this.config = config;
3131
}
3232

33-
start(): Observable<string> {
33+
start(): Observable<express.Application> {
3434
return new Observable(observer => {
3535
const app: express.Application = express();
3636
app.use(cors());
@@ -53,15 +53,7 @@ export class ExpressServer implements IExpressServer {
5353
app.use('/badge', routes.badgeRoutes());
5454
app.use(routes.webRoutes());
5555

56-
57-
app.listen(this.config.port, () => {
58-
const msg: LogMessageType = {
59-
message: `[http]: server running on port ${this.config.port}`,
60-
type: 'info',
61-
notify: false
62-
};
63-
logger.next(msg);
64-
});
56+
observer.next(app);
6557
});
6658
}
6759
}

src/api/socket.ts

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import { ICpuData, cpu } from './stats/cpu';
2626
import { decodeJwt } from './security';
2727

2828
export interface ISocketServerOptions {
29-
port: number;
29+
app: express.Application;
3030
}
3131

3232
export interface IOutput {
@@ -50,7 +50,7 @@ export class SocketServer {
5050

5151
start(): Observable<string> {
5252
return new Observable(observer => {
53-
this.createRxServer(this.options)
53+
this.createRxServer(this.options.app)
5454
.map(data => {
5555
this.token = data.conn.protocol;
5656
this.connectingClient = data.session;
@@ -287,27 +287,29 @@ export class SocketServer {
287287
});
288288
}
289289

290-
private createRxServer = (options: ws.ServerOptions) => {
290+
private createRxServer = (appplication: any) => {
291291
return new Observable((observer: Observer<any>) => {
292292
let config: any = getConfig();
293+
const expressApp = appplication.app;
293294
let server;
294295

295296
if (config.ssl) {
296297
server = https.createServer({
297298
cert: readFileSync(config.sslcert),
298299
key: readFileSync(config.sslkey)
299-
}, express());
300+
}, expressApp);
300301
} else {
301-
server = http.createServer();
302+
server = http.createServer(expressApp);
302303
}
303304

304-
server.listen(options.port);
305-
const msg: LogMessageType = {
306-
message: `[socket]: server running at port ${options.port}`,
307-
type: 'info',
308-
notify: false
309-
};
310-
logger.next(msg);
305+
server.listen(config.port, () => {
306+
const msg: LogMessageType = {
307+
message: `[server]: API and Socket Server running at port ${config.port}`,
308+
type: 'info',
309+
notify: false
310+
};
311+
logger.next(msg);
312+
});
311313

312314
let wss: ws.Server = new ws.Server({
313315
verifyClient: (info: any, done) => {

src/api/utils.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ const defaultConfig = {
2525
secret: 'thisIsSecret',
2626
jwtSecret: 'abstruseSecret4321!!',
2727
port: 6500,
28-
wsport: 6501,
2928
concurrency: 10,
3029
idleTimeout: 600,
3130
jobTimeout: 3600,

src/app/services/config.service.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,11 @@ export class ConfigService {
88
wsurl: string;
99

1010
constructor() {
11-
let proto = location.protocol === 'https:' ? 'wss' : 'ws';
12-
this.wsurl = `${proto}://${location.hostname}:6501`;
13-
14-
proto = location.protocol;
11+
let wssProto = location.protocol === 'https:' ? 'wss' : 'ws';
12+
let proto = location.protocol;
1513
let port = location.port === '8000' ? 6500 : location.port;
1614
this.url = `${proto}//${location.hostname}:${port}`;
15+
this.wsurl = `${wssProto}://${location.hostname}:${port}`;
1716
}
1817
}
1918

0 commit comments

Comments
 (0)