jsir 2.3.5 → 2.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deps/room.js +8 -5
- package/deps/server.js +19 -18
- package/package.json +1 -1
package/deps/room.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const os = require('os');
|
|
2
2
|
const {fileJson, fileLock, vl, createConsole, getKeyTips, getValTips,
|
|
3
3
|
getRoomsDir, e, regEach} = require('./util');
|
|
4
|
-
const
|
|
4
|
+
const {setRoute} = require('../deps/server')
|
|
5
5
|
const roomDataFile = "jsirRoom.json"
|
|
6
6
|
const roomsDirLockKey = "RW_" + getRoomsDir();
|
|
7
7
|
const syncRoomsLockKey = "SyncRooms_" + getRoomsDir();
|
|
@@ -30,8 +30,8 @@ function isPidAlive(pid) {
|
|
|
30
30
|
function onRoom() {
|
|
31
31
|
if (!setting.roomTid[0]) {
|
|
32
32
|
try {
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
setRoute("post", "/", (req, res) => setting.selfRoom)
|
|
34
|
+
setRoute("get", "/", (req, res) => setting.selfRoom)
|
|
35
35
|
} catch (e) {
|
|
36
36
|
console.$error("initRoute failed", e)
|
|
37
37
|
}
|
|
@@ -117,7 +117,7 @@ async function syncRooms() {
|
|
|
117
117
|
await fileLock(roomsDirLockKey, async () => {
|
|
118
118
|
for (let syncRoom of syncRooms) {
|
|
119
119
|
if (syncRoom.selfNode) {
|
|
120
|
-
await fp.writeFile(syncRoom.selfNode, JSON.stringify(syncRoom, null, 2))
|
|
120
|
+
await fp.writeFile(roomsDir + "/" + syncRoom.selfNode, JSON.stringify(syncRoom, null, 2))
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
})
|
|
@@ -148,6 +148,9 @@ async function _syncSetting(room) {
|
|
|
148
148
|
let rooms = []
|
|
149
149
|
let files = await fp.readdir(roomDir);
|
|
150
150
|
for (let node of setting.selfRoom.nodes) {
|
|
151
|
+
if (setting.selfRoom.selfNode === node) {
|
|
152
|
+
continue
|
|
153
|
+
}
|
|
151
154
|
if (files.indexOf(node) !== -1) {
|
|
152
155
|
let resp = String(await fp.readFile(roomDir + '/' + node));
|
|
153
156
|
let room = JSON.parse(resp);
|
|
@@ -211,7 +214,7 @@ async function initRoomJsir(room) {
|
|
|
211
214
|
busy: await getEventLoopDelay(),
|
|
212
215
|
back: isRunningInBackground(),
|
|
213
216
|
lastUpdateTime: Date.now(),
|
|
214
|
-
port: setting.server.address().port
|
|
217
|
+
port: setting.server ? setting.server.address().port:null
|
|
215
218
|
}
|
|
216
219
|
console.$log("init jsir", process.pid)
|
|
217
220
|
}
|
package/deps/server.js
CHANGED
|
@@ -2,15 +2,14 @@ const http = require('http');
|
|
|
2
2
|
const {createConsole, vl} = require('./util');
|
|
3
3
|
const console = createConsole();
|
|
4
4
|
const setting = require('../deps/setting')
|
|
5
|
-
|
|
6
5
|
// 尝试监听的端口
|
|
7
6
|
const preferredPort = 52108;
|
|
8
|
-
|
|
9
7
|
// 路由存储
|
|
10
8
|
const routes = {};
|
|
9
|
+
let invokeStart = false;
|
|
11
10
|
|
|
12
11
|
// 创建一个 HTTP 服务
|
|
13
|
-
function createServer(port) {
|
|
12
|
+
async function createServer(port) {
|
|
14
13
|
const server = http.createServer(async (req, res) => {
|
|
15
14
|
const method = req.method.toLowerCase();
|
|
16
15
|
const url = req.url;
|
|
@@ -25,26 +24,28 @@ function createServer(port) {
|
|
|
25
24
|
}
|
|
26
25
|
});
|
|
27
26
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
27
|
+
return await new Promise((resolve, reject) => {
|
|
28
|
+
server.listen(port, () => {
|
|
29
|
+
const address = server.address();
|
|
30
|
+
console.$log(`Server listening on port ${address.port}`);
|
|
31
|
+
resolve(server)
|
|
32
|
+
});
|
|
33
|
+
server.on('error', (err) => {
|
|
34
|
+
console.$log(`Error occurred: ${err.message}`);
|
|
35
|
+
reject(err)
|
|
36
|
+
});
|
|
37
|
+
})
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
// 尝试启动服务的逻辑
|
|
41
|
-
function startServer() {
|
|
42
|
-
if (!
|
|
41
|
+
async function startServer() {
|
|
42
|
+
if (!invokeStart) {
|
|
43
|
+
invokeStart = true;
|
|
43
44
|
try {
|
|
44
|
-
setting.server = createServer(preferredPort);
|
|
45
|
+
setting.server = await createServer(preferredPort);
|
|
45
46
|
} catch (e) {
|
|
46
|
-
console.$
|
|
47
|
-
setting.server = createServer(0);
|
|
47
|
+
console.$log("startServer failed", e)
|
|
48
|
+
setting.server = await createServer(0);
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
51
|
}
|