Skip to content

Commit 5893cf7

Browse files
committed
Better RPC and Fix Console Bug.
1 parent e27724b commit 5893cf7

File tree

14 files changed

+55
-101
lines changed

14 files changed

+55
-101
lines changed

.github/workflows/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
cd workdir
2323
- name: checkout
2424
uses: actions/[email protected]
25-
- name: body
25+
- name: Main
2626
env:
2727
signKey: ${{ secrets.SIGNKEY }}
2828
packerNoRestart : 1

helper/Response.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ function send(res, info, value) {
1414
// res.end();
1515
}
1616

17-
function wsSend(ws, info, value, body = "", RequestID) {
17+
function wsSend(ws, info, value, body = "", RequestID = null) {
1818
let header = {
1919
ResponseKey: info,
2020
ResponseValue: value,

public/common/js/tools.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@
356356
}
357357
console.log(parameters);
358358
*/
359-
pageDebounce=false;
359+
pageDebounce = false;
360360
if (page) {
361361
RES.redirectPage(`./${page}.html`);
362362
return true;
@@ -394,18 +394,18 @@
394394
};
395395

396396
// 开始监听并打开终端窗口
397-
TOOLS.listenTerminal = function (serverName) {
397+
TOOLS.listenTerminal = async function (serverName) {
398398
PAGE.methods = 0;
399399
console.log("模拟终端监听:", serverName);
400400
MCSERVER.listenServername = PAGE.serverName = serverName;
401-
WS.sendMsg("server/console/ws", serverName);
401+
await WS.call("server/console/ws", serverName);
402402
MCSERVER.term.simpleLoadHistory();
403403
$("#WebTerminalScreenWapper").removeAttr("style");
404404
};
405405

406406
// 退出监听实例,停止接受控制台信息
407-
TOOLS.CloseTerminal = function () {
408-
WS.sendMsg("server/console/remove", "");
407+
TOOLS.CloseTerminal = async function () {
408+
await WS.call("server/console/remove", "");
409409
$("#WebTerminalScreenWapper").css("display", "none");
410410
MCSERVER.term.clear();
411411
MCSERVER.term.prompt();

public/common/js/viewmodel.js

Lines changed: 10 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,15 @@
9191
});
9292
};
9393

94-
/*
94+
9595
//服务器控制台
9696
MI.routeListener("server/console", function (data) {
9797
if (data.obj == null) {
9898
TOOLS.pushMsgWindow("您并不拥有这个服务器的所有权,需要管理员设定");
9999
VIEW_MODEL["ConsolePanel"].serverData.name = null;
100100
}
101101
MI.routeCopy("ConsolePanel", data.obj);
102-
});*/
102+
});
103103

104104
// Minecraft 服务器终端换行替换符
105105
var terminalEncode = function (text) {
@@ -145,39 +145,6 @@
145145
eleTerminal.innerHTML = text + eleTerminal.innerHTML;
146146
}
147147
});
148-
149-
// 普通用户主页
150-
MI.routeListener("genuser/home", function (data) {
151-
MI.routeCopy("GenHome", data.obj);
152-
});
153-
MI.routeListener("genuser/view", function (data) {
154-
MI.routeCopy("GenRePassword", data.obj);
155-
});
156-
MI.routeListener("genuser/banned", function (data) {
157-
MI.routeCopy("BannedPanel", data.obj);
158-
});
159-
160-
//分布式服务路由
161-
MI.routeListener("workers", function (data) {
162-
MI.routeCopy("Workers", data.obj);
163-
});
164-
MI.routeListener("workers/view", function (data) {
165-
MI.routeCopy("WorkerView", data.obj);
166-
});
167-
MI.routeListener("workers/center", function (data) {
168-
MI.routeCopy("centerShow", data.obj);
169-
});
170-
171-
// 配置项试图
172-
MI.routeListener("server/properties", function (data) {
173-
MI.routeCopy("ServerProperties", data.obj);
174-
});
175-
176-
// 计划任务列表
177-
MI.routeListener("schedule/list", function (data) {
178-
MI.routeCopy("ServerSchedule", data.obj);
179-
});
180-
181148
// 初始化终端
182149
function initTerminal() {
183150
// 若终端未初始化则初始化终端与其方法
@@ -214,13 +181,8 @@
214181
// MCSERVER.term.prompt();
215182
};
216183

217-
term.simpleLoadHistory = function () {
218-
WS.sendMsg(
219-
"server/console/history",
220-
JSON.stringify({
221-
serverName: PAGE.serverName
222-
})
223-
);
184+
term.simpleLoadHistory = async function () {
185+
await WS.call("server/console/history", { serverName: PAGE.serverName });
224186
};
225187
}
226188
// 清空屏幕并输出基本欢迎语
@@ -233,10 +195,10 @@
233195
command: ""
234196
},
235197
methods: {
236-
toOpenServer: function () {
237-
WS.sendMsg("server/console/open", PAGE.serverName);
198+
toOpenServer: async function () {
199+
await WS.call("server/console/open", PAGE.serverName);
238200
},
239-
toCommand: function (parCommand) {
201+
toCommand: async function (parCommand) {
240202
if (parCommand && typeof parCommand == "string") this.command = parCommand;
241203
MCSERVER.term.prompt(this.command);
242204
console.log("发送命令:", this.command);
@@ -246,15 +208,15 @@
246208
};
247209
if (this.command.length >= 1 || typeof parCommand == "string") {
248210
//压入命令栈 并 发送
249-
WS.sendMsg("server/console/command", data);
211+
await WS.call("server/console/command", data);
250212
}
251213
this.command = "";
252214
},
253215
stopServer: function () {
254216
this.toCommand("__stop__");
255217
},
256-
simpleLoadHistory: function () {
257-
WS.sendMsg(
218+
simpleLoadHistory: async function () {
219+
await WS.call(
258220
"server/console/history",
259221
JSON.stringify({
260222
serverName: PAGE.serverName

public/common/js/websocket.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,16 @@
4141
console.log("Body:" + body);
4242
console.log("=== Websocket 收到结束 ===");
4343
}
44-
//header.body = body;
45-
let RequestMap = this.#RequestMap;
46-
if (!RequestMap.has(RequestID)) return;
47-
const [resolve, reject] = RequestMap.get(RequestID);
48-
RequestMap.delete(RequestID);
49-
resolve([header.ResponseValue, body]);
50-
51-
MI.on("ws/response", header, body);
52-
//产生当时数据接受事件
53-
this.tmp_callback && this.tmp_callback(header);
44+
header.body = body;
45+
if(typeof RequestID==="number"){
46+
let RequestMap = this.#RequestMap;
47+
if (!RequestMap.has(RequestID)) return;
48+
const [resolve, reject] = RequestMap.get(RequestID);
49+
RequestMap.delete(RequestID);
50+
resolve([header.ResponseValue, body]);
51+
}else{
52+
MI.on("ws/response", header);
53+
}
5454
} catch (e) {
5555
console.log("Websocket 数据到达时逻辑异常:");
5656
console.log(e);

public/template/center.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,9 @@
230230
//创建
231231
MI.rListener("onload", async function () {
232232
// 定义页面地址
233-
var isPanel = VIEW_MODEL["centerShow"]?.isPanel ?? !MCSERVER.workername;
233+
var isPanel = !MCSERVER.workername ?? VIEW_MODEL["centerShow"]?.isPanel;
234234
if (isPanel) {
235-
await TOOLS.definePage("template/center", "center/show", "", "centerShow");
235+
await TOOLS.definePage("template/center", "center/show", null, "centerShow");
236236
} else {
237237
await TOOLS.fetchData("workers/center", MCSERVER.workername, "centerShow");
238238
}
@@ -290,7 +290,7 @@
290290
}
291291
},
292292
toRestart: async function (itemWorkername) {
293-
await WS.call(itemWorkername ? "workers/restart" : "center/restart", itemWorkername || "", resolve);
293+
await WS.call(itemWorkername ? "workers/restart" : "center/restart", itemWorkername || "");
294294
if (!itemWorkername) {
295295
TOOLS.pushMsgWindow("面板重启");
296296
} else {
@@ -302,7 +302,7 @@
302302
});
303303

304304
PAGE.time = setInterval(async function () {
305-
var isPanel = VIEW_MODEL["centerShow"]?.isPanel ?? MCSERVER.workername;
305+
var isPanel = !MCSERVER.workername ?? VIEW_MODEL["centerShow"]?.isPanel;
306306
var onRefresh = WS.call(isPanel ? "center/show" : "workers/center", isPanel ? "" : MCSERVER.workername);
307307
var onTimeout = new Promise(_ => setTimeout(_, 5000, false));
308308
var result = await Promise.race([onRefresh, onTimeout]);
@@ -315,7 +315,7 @@
315315
//关闭
316316
MI.rListener("onend", function () {
317317
clearInterval(PAGE.time);
318-
var isPanel = VIEW_MODEL["centerShow"]?.isPanel ?? MCSERVER.workername;
318+
var isPanel = !MCSERVER.workername ?? VIEW_MODEL["centerShow"]?.isPanel;
319319
if (!isPanel) {
320320
delete MCSERVER.workername;
321321
}

public/template/component/terminal.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@
144144
});
145145

146146
MI.rListener("onend", async function () {
147-
WS.await("server/console/remove", "");
147+
await WS.call("server/console/remove", "");
148148
PAGE.mainC.innerHTML = "";
149149
PAGE.mainC.onscroll = function () { };
150150

public/template/filemanager.html

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,18 +71,15 @@
7171
el: "#QuickOperation",
7272
methods: {
7373
toOnlineFs: async function (serverName) {
74-
// MCSERVER.listenServername = serverName;
75-
let data = await WS.call("onlinefs/getServerKey", serverName);
76-
window.open(data.ResponseValue.url);
77-
//var path = MCSERVER.URL("fs_auth/auth/" + encodeURIComponent(serverName));
78-
//window.open(path);
74+
let [{url}] = await WS.call("onlinefs/getServerKey", serverName);
75+
window.open(url);
7976
},
8077
toServersDir: async function (type = 0, workername) {
8178
if (type == 0) {
8279
var path = MCSERVER.URL("fs_auth/auth_master/pwd");
8380
window.open(path);
8481
} else if (type == 1) {
85-
let data = await WS.call("onlinefs/getWorkerKey", workername);
82+
let [{url}] = await WS.call("onlinefs/getWorkerKey", workername);
8683
window.open(data.ResponseValue.url);
8784
}
8885
}

route/websocket/center.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,13 @@ setInterval(async function () {
9898

9999
//重启逻辑
100100
WebSocketObserver().listener("center/restart", (data) => {
101-
if (!permssion.hasRights(data.WsSession.username, "restart")) return;
101+
if (!permssion.hasRights(data.WsSession.username, "restart")) return response.wsResponse(data, false);
102102
MCSERVER.log("面板重启...");
103-
process.send({ restart: "./app.js" });
104-
process.emit("SIGINT");
103+
response.wsResponse(data, true);
104+
process.nextTick(()=>{
105+
process.send({ restart: "./app.js" });
106+
process.emit("SIGINT");
107+
});
105108
});
106109

107110
//数据中心

route/websocket/console.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@ function selectWebsocket(serverName, callback) {
1313
}
1414
}
1515

16-
WorkerObserver().listener("server/console/ws", async ({ body }) => {
17-
for (let [serverName, buffer] of Object.entries(body)) {
18-
selectWebsocket(serverName, (socket) => {
19-
response.wsSend(socket.ws, "server/console/ws", {}, buffer);
20-
});
16+
WorkerObserver().listener("server/console/ws", async (data) => {
17+
for (let [serverName, buffer] of Object.entries(data.body)) {
18+
selectWebsocket(serverName, socket => response.wsSend(socket.ws, "server/console/ws", {}, buffer));
2119
}
2220
});
2321

@@ -43,8 +41,7 @@ WebSocketObserver().listener("server/console/ws", async (data) => {
4341
response.wsMsgWindow(data.ws, "出错:" + "Worker不存在");
4442
}
4543
let [{ ResponseValue }, body] = await worker.call("server/console/ws", data.body);
46-
response.wsResponse(data, ResponseValue, body);
47-
return;
44+
return response.wsResponse(data, ResponseValue, body);
4845
}
4946

5047
MCSERVER.log(`[${serverName}] >>> 拒绝用户 ${userName} 控制台监听`);

0 commit comments

Comments
 (0)