Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

11.02.2017, 12:12

Javascript Brwoser und Arbeitsspeicher

Hallo,

mir ist etwas aufgeafflen das ich nicht ganz so kapiere.

Ich habe neulich ein Programm gebaut mti Javascript, das jede Sekunde eine Verbindung zu einem Websocket macht das funktioniert auch ganz gut.

Das ganze ist so aufgebaut das Mit Ajax XMLHttpRequest() und open("GET") eine Verbindung zu einer PHP Datei gemacht wird, da werden dann einige Infos ausgelsen und zurueck gegeben.

Das funktioniert alles ganz gut.

Jetzt habe ich eine zweite Funktion eingebaut die im Prinzip das selber macht wie die andere vorher, aber diesmal habe ich festgestellt das nach einigen Sekunden der Arbeitsspeicher immer weiter ansteigt, erst wenn ich diese neue Funktion raus mache passiert das nicht mehr.

Ich frage mich jetzt ob man irgendwie vergessen hat eine offene Verbindung wieder zu schliessen oder wie sowas zustande kommen kann das der Arbeitsspeicher wegen dieser Funktion so ansteigt. Weil im Prinzip ist diese Funktion nachgebaut udn funktioniert so wie die erste die keine probleme macht, obwohl ein kleinen Unterschied hat die zweite Funktion, ich benutze da die Methode POST statt GET um mit der PHP Datei zu kommunizieren, aber ob das ein Grund sein kann fuer diese Uberlastung weis ich nicht.


Kommt das irgendjemand bekannt vor und hat jemand zufaellig eine Idee wie solche Sachen zu stande kommen? Vielleicht weis ich ja wenigstens schonmal wo am besten mit dem Suchen starten wenn jemand eine Idee hat.

2

11.02.2017, 17:30

Vermutlich hast du irgendwo vergessen, etwas wieder freizugeben...
fka tm

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

3

11.02.2017, 17:58

das jede Sekunde eine Verbindung zu einem Websocket

Normalerweise macht man einmal eine Websocket-Verbindung auf und arbeitet dann damit weiter, statt jede Sekunde eine neue zu öffnen. Kann es sein, dass du wirklich jede Sekunde eine Verbindung öffnest, ohne diese irgendwann wieder zu schließen?
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

4

11.02.2017, 18:34

das jede Sekunde eine Verbindung zu einem Websocket

Normalerweise macht man einmal eine Websocket-Verbindung auf und arbeitet dann damit weiter, statt jede Sekunde eine neue zu öffnen. Kann es sein, dass du wirklich jede Sekunde eine Verbindung öffnest, ohne diese irgendwann wieder zu schließen?


In diesem Fall ist es so dass die Websocket Verbindung von alleine nach einigen Sekunden schliest und man deswegen sowieso immer eine neue Verbindung erstellen muss.

5

11.02.2017, 18:36

Mir ist etwas aufgefallen, wenn ich mit Ajax und Methode GET die Daten sende kommt es nicht zu dieser Ueberlastung wenn ich aber POST benutze passiert das, ich habe hier beide Funktionen zur Ansicht:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function SendeHistoryZurDatenbank_POST(api,text) {

xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() 
{
    if (this.readyState == 4 && this.status == 200) 
    {
        //alert(this.responseText);
    }
};
xmlhttp.open("POST", "save_history.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("api="+api+"&text="+text);

}


function SendeHistoryZurDatenbank_GET(api,text) {
        var xhttp = new XMLHttpRequest();
        xhttp.open("GET", "save_history.php?api="+api+"&text="+text, true);
        xhttp.send();
}



Sieht irgendjemand in der Funktion die mit POST die Daten sendet ein Fehler der so eine Ueberlastung erzeugen kann?

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

6

11.02.2017, 18:47

Wofür brauchst du den WebSocket? Wenn er sowieso immer wieder geschlossen wird arbeite mit GET oder POST.
Das POST sieht an sich ok aus, ohne jetzt nachzuschauen wie das en detail auszusehen hat.

7

11.02.2017, 19:02

xmlhttp ist keine lokale Variable. Wird auch noch außerhalb der Funktion darauf zugegriffen?

8

11.02.2017, 19:03

Wofür brauchst du den WebSocket? Wenn er sowieso immer wieder geschlossen wird arbeite mit GET oder POST.
Das POST sieht an sich ok aus, ohne jetzt nachzuschauen wie das en detail auszusehen hat.


Ich muss halt mit ein Websocket Server kommunizieren, der nimmt kein GET und POST an, mit den Ajax Funktion und der POST Methode sende ich nur an mein eigenen Webserver einige Infos.

9

11.02.2017, 19:09

Wie kann ich den in Javascript nachschauen ob zur Zeit ein Websocket Verbindung schon offen ist, damit ich keine neue Oeffne?

Bei mir sieht das momentan so aus:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function Verbinden()
{

var ws = new WebSocket("wss://ws.bdggfws.com/websockets/vfsd?ap_id=2ge1");

      ws.onopen = function(evt)
        {          
          var HandelsErlaubnisAnfragen = { "authorize": ""+api+"" };
          ws.send(JSON.stringify(HandelsErlaubnisAnfragen));
            //alert("send erlaubnis");
        };


       ws.onmessage = function (msg) 
         {
           //hier sende ich dann mit ws.send(JSON.stringify(GetHistory)); Anfragen zum Webserver
         } 
}


also ws.onopen() zeigt wohl an das Die Verbindung offen ist und bei Rueckgabe on.message() sende ich auch Infos zurueck und in der on.message() funktion habe ich dann verschiedene Codes welche die Rueckgabe auslesen und damit was machen.

Und die Funktion Verbinden() die das alles durchfuehrt wird jede Sekunde neu aufgerufen und ich weis nicht ob man das gewohnlich auch so macht. Die Websocket Verbindung wird aber vom anderen Webserver auch alle paar Sekunden automatisch wieder geschlossen.

10

11.02.2017, 19:10

xmlhttp ist keine lokale Variable. Wird auch noch außerhalb der Funktion darauf zugegriffen?

xmlhttp ist keine lokale Variable. Wird auch noch außerhalb der Funktion darauf zugegriffen?


Das war ein Schreibfehler, da habe ich ein "var" vergessen dran zu haengen damit es eine lokale Variable wird. Aber das hat den Fehler nicht verursacht.

Werbeanzeige