Projekt - Welche Sprache, welches Vorgehen

07/04/2016 14:34 Player95#1
Hallo,

ich wurde gerne ein kleines Projekt starten und habe folgende Anforderungen:

Sprache: Javascript (Node.js), Python, HTML ohne PHP.

Ziel: In nahezu Echtzeit andere Computer auf Onlinestatus (Ping) zu prüfen und das anzuzeigen. Außerdem sollte möchte ich Computer und virtuelle Maschinen auf ebenjenen hinzufügen, löschen und ändern können.

Mein Problem ist, dass ich in Sachen Webanwendungen nicht so gut auskenne. Basics sind teilweise vorhanden, nicht konkret bei Node und Django, aber jetzt stehe ich vor dem Problem, dass ich nicht weiß, wie das am besten lösbar ist. Ich weiß eben nicht, was die Lösungen/Sprachen alles können!

Am liebsten würde ich Python mit Django benutzen, allerdings weiß ich nicht im Entferntesten, wie ich es hinbekommen soll, dass der Onlinestatus dynamisch OHNE REFRESH angezeigt wird.

Möglich wäre es es ja mit jQuery settimeout(). Ginge dann z.B. folgendes (Pseudocode)?:

Code:
foreach (pc in getPCs()) {
    JAVASCIRPT: PING pc.getIp()
    // Erfolgreich
    <p> Online </p>
    // Nicht erfolgreich
    <p> Offline </p>
Ich erwarte keinen Code, sondern lediglich Meinungen und/oder Empfehlungen, wie ich das grob machen könnte.

Danke
Player95
07/04/2016 15:34 Der-Eddy#2
Quote:
Originally Posted by Player95 View Post
Sprache: Javascript (Node.js), Python, HTML ohne PHP.
Du scheinst hier anscheinend etwas zu verwechseln
Node.js ist ein Webserver so wie Django oder Flask für Python
Beides zu kombinieren wäre einfach viel Aufwand für wenig Nutzen, du meinst wahrscheinlich reines Javascript (mit vielleicht nem Framework wie JQuery) welches im Browser ausgeführt wird
Node.js wird jedoch im Server ausgeführt => Nicht das selbe

Quote:
Originally Posted by Player95 View Post
Am liebsten würde ich Python mit Django benutzen, allerdings weiß ich nicht im Entferntesten, wie ich es hinbekommen soll, dass der Onlinestatus dynamisch OHNE REFRESH angezeigt wird.
Dafür brauchst du 2 Sachen:
- Dein Python Backend welches den Server anpingt und in einer API das Ergebnis bereitstellt (z.B. als JSON, XML, etc.)
- Ajax Requests welche das API alle X Sekunden/Minuten abfragen und das Ergebnis aus der API anzeigen

In Javascript könnte das z.b. so aussehen:
HTML Code:
Refreshing in <span id="countdown">10</span> seconds.

<script>
function refreshPing() {
    $.ajax({
        url: '/api/ping/',
        type: 'GET',
        dataType: 'json',
        success: function(result) {
            //do something with result
        }
    });
}

var time = 10;
setInterval(function() {

    time--;

    $('#countdown').html(time);

    if (time === 0) {

        time = 11;
        refreshPing();
    }


}, 1000);
</script>
JQuery vorrausgesetzt
07/04/2016 19:21 Punisher.biz#3
Node => http, express + io und go. Da hast Du alles was Du brauchst.
07/05/2016 02:31 #Metho#4
Oder Alternativ XMLHttpRequest und ActiveXObject statt jQuery
07/06/2016 15:56 Player95#5
Moin,

danke für eure Antworten, ich werde es dann denke ich mal nächste Woche mit Python versuchen. Mal schauen, wie lange meine Motivation da dann reicht ;-)
Werde auf jeden Fall noch verlauten lassen, wie es gelaufen ist, ob ich es geschafft habe :-)

Gruß
Player95
07/18/2016 23:55 Player95#6
Moin Leute, wollte mal ein kleines Update geben ;-)

Habe das jetzt mit Python + Django und natürlich Javascript hinbekommen.
Manch einer mag wohl die Hände über den Kopf zusammenschlagen, wenn er den Code sieht, aber es funktioniert :-)

Danke übrigens für den Codeschnipsel (y)

Im Prinzip war es sogar viel einfacher, als ich vorher gedacht habe. Mit Django ist es ja super einfach, die Objekte usw. zu speichern und zu laden.

Dann habe ich im Prinzip alle Maschinen und die dazugehörigen Container per Django-Template-For-Schleife durchiteriert und dafür den HTML- + Javascript-Code zusammengebastelt.

Die REST-Schnittstelle zum Pingen brauchte ich dann auch nicht, da ich die Maschinen direkt per JSON-RPC angesteuert habe und dort dann den Verbindungsfehler festgestellt habe.

Das nervigste ist jetzt eigentlich die Bearbeitung der Oberfläche mit jQuery... zwischenzeitlich bin ich echt am verzweifeln, weil ich da dauernd irgendwelche dummen Fehler reinbaue und sonst mittlerweile sowieso keinen Plan von nichts mehr habe. Denke ich räume das alles nochmal grundsätzlich auf.

Grüße