-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.ts
78 lines (64 loc) · 1.55 KB
/
main.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
require("source-map-support").install();
import { app, BrowserWindow, ipcMain } from "electron";
import * as net from "net";
import * as path from "path";
import * as split2 from "split2";
import * as stream from "stream";
import * as through2 from "through2";
const HOSTNAME: string = "localhost";
const PORT: number = 5680;
let mainWindow: BrowserWindow;
let socket: net.Socket;
app.on("activate", () => {
if (mainWindow === null) {
createWindow();
}
});
app.on("ready", () => {
createWindow();
registerHandlers();
socket = new net.Socket();
socket
.pipe(split2())
.pipe(
through2(function(chunk, _encoding, next) {
const json = JSON.parse(chunk) as string;
this.push(JSON.stringify(json));
next();
})
)
.pipe(
new stream.Writable({
write: function(chunk, _encoding, next) {
mainWindow.webContents.send("update", chunk);
console.log("update sent");
next();
}
})
);
socket.connect(PORT, HOSTNAME);
});
app.on("window-all-closed", () => {
if (process.platform !== "darwin") {
app.quit();
}
});
process.on("uncaughtException", error => {
console.log(error);
});
function createWindow() {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
preload: path.join(__dirname, "preload.js")
}
});
mainWindow.loadFile(path.join(__dirname, "../index.html"));
mainWindow.on("closed", () => {
mainWindow = null;
});
}
function registerHandlers() {
}