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

11

11.02.2017, 19:14

Also Mittlerweile sieht das so aus das diese Ueberlastung auch bei benutzen der Ajax Funktion mit Methode GET vorkommt, ich muss wohl irgendo etwas nicht so gut aufgebaut haben.

Am besten ich suche irgendwo ein Tutorial und lerne nochmal wie man am besten mit Javascript und Websocket kommuniziert.

Nimelrian

Alter Hase

Beiträge: 1 216

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

  • Private Nachricht senden

12

11.02.2017, 21:19

Alternativ kannst du auch mit fetch arbeiten. Da würdest du etwas moderner mit Promises statt Callbacks arbeiten. Eventuell behebt sich damit auch das Problem. Normalerweise arbeitet man auch nicht direkt mit XMLHttpRequest, sondern mit einem Wrapper darum (Sei es jQuery oder Restler, oder irgendwas anderes).
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

13

11.02.2017, 21:53

Alternativ kannst du auch mit fetch arbeiten. Da würdest du etwas moderner mit Promises statt Callbacks arbeiten. Eventuell behebt sich damit auch das Problem. Normalerweise arbeitet man auch nicht direkt mit XMLHttpRequest, sondern mit einem Wrapper darum (Sei es jQuery oder Restler, oder irgendwas anderes).


Ist "fetch" fuer Websocket Verbindungen geeignet? Weil ich muss schon mit einem Websocket Server der nicht mir gehoert zusammen kommunizieren.

Wie kann ich den anders als mit XMLHttpRequest Daten von einer PHP Datei auslesen oder in eine Datenbank speichern von einem Javascript Program heraus? Weil meine Websocket Communication ist mit Javascript gebaut.

Nimelrian

Alter Hase

Beiträge: 1 216

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

  • Private Nachricht senden

14

11.02.2017, 23:07

Nein, fetch ist der neue XMLHttpRequest. fetch und Websocket sind komplett unterschiedlich und haben unterschiedliche Anwendungszwecke.
Wir wissen leider viel zu wenig von deinem Anwendungsfall, um dich hier ordentlich unterstützen zu können.

Generell hört sich das hier:

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.

aber so an, als wenn da schon beim Grundaufbau etwas schief läuft.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

15

11.02.2017, 23:41

Ich glaube ich muss noch etwas mehr den kompletten Ablauf von websockets usw. lernen, damit ich auch meine bisherigen Fehler schneller korigieren kann. Ich denke mir muss der ganze Aufbau noch klarer werden, wann man welche Befehle benutzt.

Diese asynchrone Arbeitsweise der Websockets ist etwas schwer nach zu vollziehen, da muss ich mir mehr Beispiele ansehen.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

16

12.02.2017, 07:23

Ein Websocket ist vom Prinzip her eine dauerhafte Verbindung. Ein Fetch ist etwas einmalies. Es macht also wenig Sinn das Socket jede Sekunde zu öffnen und wieder zu schließen. Lass es gleich einfach offen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

17

12.02.2017, 07:56

Ich weis nicht, schaut mal mein Aufbau, schliese ich dort irgendwo die Verbindung? Ich glaube nicht das passiert eigentlich von selbst:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
function WebsocketVerbindung(api)
{
   if("WebSocket" in window)
     {         
         var ws = new WebSocket("wss://ws.byjhjs.com/websockets/vugy?app_id=4jk");

         ws.onopen = function(evt)
         {         
             var HandelsErlaubnisAnfragen = { "authorize": ""+api+"" };
             ws.send(JSON.stringify(HandelsErlaubnisAnfragen));
         };
    
         ws.onmessage = function (msg) 
         {
            var received_msg = JSON.parse(msg.data);
            var text = msg.data;

            if(text.search("transactions")>0)
              {
                  if(text.search(api)>=0)
                    {
                       SendeHistoryMitPOSTDatenbank(api,text);
                    }
              }

               var GetHistory = {
                                "statement": 1,
                                "description": 1,
                                "action_type": "sell",
                                "limit": 20,
                                "passthrough": {
                                "pin":""+api+""
                                }
                                };

                ws.send(JSON.stringify(GetHistory));
         }; // Ende on.message

        ws.onclose = function()
        {
           // websocket is closed.
           //alert("Connection is closed...");
        };
   }

}//Ende Funktion Verbinden

function WebsocketNeuAufrufen()
   {
     WebsocketVerbindung("123");
     setTimeout(WebsocketNeuAufrufen, 1000);
   }

<body onload="WebsocketNeuAufrufen()">


Findet irgendjemand ein Fehler im Aufbau meiner Verbindung und Kommunikation?

Ich habe die Funktion welche sich zum Websocket verbindet in einer anderen Funktion aufgerufen welche jede Sekunde sich neu aufruft, auf die Weise funktioniert der Datenaustausch, wenn die Javascript Funktion sich nicht jede Sekunde neu aufrufen wuerde, dann wuerde ja alles still stehen.

Die Frage ist jetzt vielleicht da sich die Funktion jede Sekunde neu aufruft, ob es moeglich ist dort in der Websocket Verbinden Funktion etwas ein zu bauen, das erst nachschaut ob schon/noch eine Verbindung offen ist bevor eine neue Verbindung gemacht wird.

So wie ich das verstehe mit den Websockets, muss eine Verbindung offen sein, dann kann man Anfragen senden und die Ruckgabe auslesen. Die Ueberpruefung ob schon eine Verbindung offen ist fehlt vielleicht in meinem Beispiel, da bin ich mir nicht sicher.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »SpieleProgrammerUser« (12.02.2017, 08:32)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

18

12.02.2017, 08:20

Da du die Variable für das Websocket nur innerhalb der Funktion erzeugst und auch nur dort verwendest, wird es folglich auch wieder zerstört, sobald die Funktion verlassen wird. Grundlagen javascript: Variablen & Scope.

Edit: Kann mir jemand verraten, wieso "javascript:" in meinem Beitrag klein geschrieben angezeigt wird, obwohl ich es groß geschrieben habe und es mir im Editor auch als groß angezeigt wird?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

19

12.02.2017, 08:39

Da du die Variable für das Websocket nur innerhalb der Funktion erzeugst und auch nur dort verwendest, wird es folglich auch wieder zerstört, sobald die Funktion verlassen wird. Grundlagen javascript: Variablen & Scope.

Edit: Kann mir jemand verraten, wieso "javascript:" in meinem Beitrag klein geschrieben angezeigt wird, obwohl ich es groß geschrieben habe und es mir im Editor auch als groß angezeigt wird?


Wie wuerdest du das aufbauen?
Wenn ich beispielweise die "setTimeout();" direkt in die Funktion einbaue welche die Websocket verbindung macht und dann auch nur die WebsocketVerbinden Funktion im <body> Tag lade, wuerde dann nicht auch die Websocket Verbindung jede Sekunde neu aufgebaut werden?

ich nehme mal an das die Websocket Verbindung durch folgenden Befehle gemacht wird:

Quellcode

1
var ws = new WebSocket("wss://ws.byjhjs.com/websockets/vugy?app_id=4jk");


Dieser Befehl wird ja jedesmal neu ausgefuehrt, normalerweise wuerde ich das lieber so machen:

Quellcode

1
if(Verbindung_Noch_Nicht_Offen)var ws = new WebSocket("wss://ws.byjhjs.com/websockets/vugy?app_id=4jk");


Also erst pruefen ob die Verbindung noch nicht offen ist und dann verbinden, aber ich habe da keine Beispiele gefunden wie man das abfragt und weis nicht ob man das ueberhaupt abfragen muss/kann/sollte.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

20

12.02.2017, 11:37

Ich würde dir dringend empfehlen mal ein Buch über Programmierung und speziell Javascript zu lesen. Wenn du nur vermutest wie das Websocket erzeugt wird, ist deine Programmierung letztlich scheinbar nur Rätselraten (und copy/paste). Du kannst dir sicherlich vorstellen, dass es für uns weder einfach, nur sonderlich befriedigend ist, dir alles vorzukauen und zu erklären. Wir sind sicherlich für Probleme gern da und helfen dort aus, wo jemand absolut nicht mehr weiterkommt. Aber im Gegenzug erwarten wir eben auch, dass der Fragesteller sich mit seinen Tools entsprechend beschäftigt.
Für mich ist hier an dieser Stelle Schluss, weil ich denke, dass dir so viele Grundlagen fehlen, dass wir letztlich den Code für dich schreiben müssten. Die Hinweise, die ich dir bereits gegeben habe, hätten eigentlich genügen müssen, um es zu korrigieren.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige