Skip to content

Commit bafd4f0

Browse files
committed
fix(sessions): improve stavility of socket sessions
1 parent d0b9d90 commit bafd4f0

File tree

5 files changed

+24
-48
lines changed

5 files changed

+24
-48
lines changed

package-lock.json

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

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@
120120
"clipboard": "^1.7.1",
121121
"codelyzer": "4.0.0",
122122
"compression-webpack-plugin": "^1.0.1",
123+
"connect-sqlite3": "^0.9.10",
123124
"conventional-changelog": "^1.1.6",
124125
"conventional-changelog-cli": "^1.3.4",
125126
"copy-webpack-plugin": "^4.2.0",
@@ -131,7 +132,6 @@
131132
"enhanced-resolve": "^3.4.1",
132133
"express": "^4.16.2",
133134
"express-session": "^1.15.6",
134-
"express-ws": "^3.0.0",
135135
"extract-text-webpack-plugin": "^3.0.2",
136136
"file-loader": "^1.1.5",
137137
"fs-extra": "^4.0.2",

src/api/index.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import { initSetup } from './setup';
1818
import { generateKeys } from './security';
1919
import * as db from './db/migrations';
2020
import chalk from 'chalk';
21-
import * as expressWs from 'express-ws';
2221

2322
const server = new ExpressServer({ port: 6500 });
2423

@@ -35,8 +34,7 @@ initSetup()
3534
})
3635
.then(() =>
3736
server.start().subscribe(app => {
38-
const socket = new SocketServer({ app: expressWs(app) });
39-
37+
const socket = new SocketServer({ app: app });
4038
Observable
4139
.merge(...[socket.start(), generateKeys()])
4240
.subscribe(data => {

src/api/server.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,11 @@ import { Observable } from 'rxjs';
55
import * as routes from './server-routes';
66
import { webhooks } from './webhooks';
77
import * as session from 'express-session';
8-
import * as uuid from 'uuid';
98
import { logger, LogMessageType } from './logger';
9+
import { getRootDir } from './setup';
10+
import * as connectsqlite3 from 'connect-sqlite3';
11+
12+
const SQLiteStore = connectsqlite3(session);
1013

1114
export interface ServerConfig {
1215
port: number;
@@ -18,6 +21,7 @@ export interface IExpressServer {
1821
}
1922

2023
export const sessionParser = session({
24+
store: new SQLiteStore({ dir: getRootDir() }),
2125
saveUninitialized: false,
2226
secret: 'sessionSecret',
2327
resave: false

src/api/socket.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,22 +54,20 @@ export class SocketServer {
5454
}
5555

5656
start(): Observable<string> {
57-
return new Observable(observer => {
58-
this.setupServer(this.options.app);
59-
});
57+
return new Observable(observer => this.setupServer(this.options.app));
6058
}
6159

62-
private setupServer = (application: any) => {
60+
private setupServer(application: any): void {
6361
let config: any = getConfig();
6462
let server = null;
6563

6664
if (config.ssl) {
6765
server = https.createServer({
6866
cert: readFileSync(config.sslcert),
6967
key: readFileSync(config.sslkey)
70-
}, application.app);
68+
}, application);
7169
} else {
72-
server = http.createServer(application.app);
70+
server = http.createServer(application);
7371
}
7472

7573
const wss: uws.Server = new uws.Server({
@@ -140,11 +138,11 @@ export class SocketServer {
140138
});
141139
}
142140

143-
private addClient(client: Client) {
141+
private addClient(client: Client): void {
144142
this.clients.push(client);
145143
}
146144

147-
private removeClient(socket: uws.Socket) {
145+
private removeClient(socket: uws.Socket): void {
148146
const index = this.clients.findIndex(c => c.socket === socket);
149147
const client = this.clients[index];
150148
const msg: LogMessageType = {
@@ -157,7 +155,7 @@ export class SocketServer {
157155
this.clients.splice(index, 1);
158156
}
159157

160-
private handleEvent(event: any, client: Client) {
158+
private handleEvent(event: any, client: Client): void {
161159
switch (event.type) {
162160
case 'login': {
163161
const token = event.data;

0 commit comments

Comments
 (0)