我目前正在學習JavaScript/NodeJS/electron,並且我想要構建一個小型演示者應用程序來遠程控制PPT演示文稿。NodeJS Ajax請求正好工作七次
我設置使用電子這樣的服務器:
const electron = require('electron');
const robot = require("robotjs");
const fs = require('fs');
const express = require('express');
const cors = require('cors');
const {
app,
BrowserWindow
} = electron;
var mainWin = null;
var contentString;
app.on('ready', function() {
mainWin = new BrowserWindow({
width: 800,
height: 600
});
contentString = "";
// Remove Menu-Bar
mainWin.setMenu(null);
const port = 3000;
var app = express();
app.use(cors());
app.post('/remote/forward', function(request, response, next) {
var ip = getRemoteIP(request);
log(mainWin, "presenter - forward");
robot.keyTap("right");
});
app.post('/remote/backward', function(request, response, next) {
var ip = getRemoteIP(request);
log(mainWin, "presenter - backward");
robot.keyTap("left");
});
app.listen(port, function() {
log(mainWin, 'server listening on port ' + port);
});
});
function log(mainWin, text) {
contentString += getFormattedDate() + " " + text;
contentString += "<br />";
mainWin.loadURL("data:text/html;charset=utf-8," + encodeURI(contentString));
}
我把這些有兩個JS-功能:
function sendForwardRequest() {
$.ajax({
type: 'POST',
data: {
blob: {action:"forward"}
},
contentType: "application/json",
dataType: 'json',
url: 'http://192.168.2.110:3000/remote/forward',
success: function(data) {
console.log('success');
},
error: function(error) {
console.log("some error in fetching the notifications");
}
});
}
function sendBackwardRequest() {
$.ajax({
type: 'POST',
data: {
blob: {action:"backward"}
},
contentType: "application/json",
dataType: 'json',
url: 'http://192.168.2.110:3000/remote/backward',
success: function(data) {
console.log('success');
},
error: function(error) {
console.log("some error in fetching the notifications");
}
});
}
我敢肯定,這個解決方案是相當miserble,如我說,我目前正在學習這一點。我現在的問題是:這個工作正好七次。之後,我必須重新加載我的客戶端瀏覽器。我怎樣才能解決這個問題?另外,對於這些請求,更好的解決方案是什麼?我想只有一個app.post() - 方法,並使用給定的後置參數。最後一個問題:什麼可能是更好的記錄方法?我想將內容追加到我的窗口,而不是每次都重新加載整個字符串。
非常感謝!
只是爲了簡化,你不需要'POST',使用'GET'。你爲什麼要發送'data:{blob:..}'?你可以通過url – Jag
@Jag來告訴它的前進或後退,如我所說,我認爲使用這個任務的一個url並使用數據指定類型會更好。但是你當然是對的,如果你想爲每個函數使用不同的URL。 – Marcel
注意:我只是將請求更改爲GET,這允許我只調用一次請求。我只是從app.post更改爲app.get並設置了要獲取的類型。我還需要額外做些什麼嗎? – Marcel