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

31.01.2017, 21:38

Javascript Seite aufrufen mit Webrequest

Hallo,

ich habe eine PHP Seite oder man kann im Prinzip sagen eine HTML Seite gebaut. In der Seite wird mit Javascript eine Websocket Verbindung erstellt. Die Javascript Funktion wird geladen sobald man die Seite im Browser oeffnet, mit dem onload="" argument im <body> Tag.

Also das laeuft alles wie es soll, mein Problem ist, wenn ich diese Seite mit einer Webrequest() FUnktion von ausserhalb aufrufe, bekomme ich nur den Quellcode der Seite als Ausgabe, aber das Javascript in der Seite wird nicht ausgefuehrt.

Ich will aber gerne das jedesmal wenn ich ueber meine Webrequest() Funktion diese Seite aufrufe, das dann auch das Javascript dort ausgefuehrt wird, ist sowas moeglich?

Wenn ich an meine Webrequest() Funktion einige Parameter dran haenge dann reagiert der PHP Server ja auch und gibt mir eine Rueckgabe, ich kann also mit den Parameter in der Webrequest() Funktion die PHP Seite steuern und verschiedene Ausgaben erzwingen, aber das Javascript wird nicht ausgefuehrt, das passiert nur wenn man die Seite im Browser oeffnet.

Ich habe mal in Google gelesen das es auch mit PHP moeglich sein kann Javascript aus zu fuehren, aber ich weis nicht ob das zu kompliziert wird, im Prinzip brauche ich nur etwas das diese HTML Seite einmal im Browser neuladet, zum Zeitpunkt wo ich ein Webrequest() mit meiner Funktion an diese Seite sende.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

31.01.2017, 23:46

Wenn du JavaScript ausführen willst, brauchst du einen virtuellen Browser wie PhantomJS. Kann ich nur empfehlen! Alternativ: Awesomium

3

01.02.2017, 00:37

Hallo,

danke fuer deine Hilfe.

Ich habe heute beim suchen in Google auch schon kurz das Stichwort "PhantomJS" gesehen, es sah nicht einfach aus fuer ein Beginner und ich war mir nicht sicher ob ich damit auch das machen kann was ich will.

Ich erklaer mal kurz etwas genauer was ich brauche.

Im Moment habe ich das Javascript ganz normal in einer HTML Seite, immer wenn ich die HTML Seite neulade oder halt ein Knopf druecke in der Seite, dann wird entweder mit "onload" oder "onclick" das Javascript ausgeufhert, funktioniert auch ganz gut.

Jetzt wollte ich das aber automatisieren, damit ich nicht immer selber den Knopf auf der Seite druecken muss, meine Idee war mit einer Webrequest() Funktion die Seite auf zu rufen, aber ich habe schnell gemerkt, das dies nicht dazu fuehrt das die Javascript Funktion auch ausgefuehrt wird, ich bekomme nur den Quellcode mit der Webrequest() Funktion zurueck, ohne das dir Javascript Funktion Ihre Arbeit macht.

Kann man diese Problem mit "PhantomJS" loesen?

Mir ist auch eben eine andere Idee noch gekommen, ich hatte mir ueberlegt das ich den Webbrowser die ganze Zeit auf einem PC laufen lasse und die HTML Seite dort geoeffnet habe. In der HTML Seite soll dann mit Hilfe von Javascript eine Endloschleife starten oder irgendetwas das dazu fuehrt das von Morgens bis Abends, also die ganze Zeit mit Hilfe von Javascript eine Textdatei ausgelesen wird in welche in das per Webrequest() Befehle sende, sobald ich dann ein Webrequest mache und neue Befehle in der Textdatei ankommen, wuerde das Javascript dies erkennen und seine Arbeit machen, also eine Aktion ausfuehren, wie findest du diese Idee, kann sowas auch funktionieren, oder wuerde das nicht so gut laufen, beispielweise Ueberlastung, Webbrowser Absturz usw?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

01.02.2017, 08:03

Ja, PhantomJS ist quasi ein virtueller Browser, den du per Programmcode steuerst. Er lädt für dich eine Seite und führt auch JavaScript aus. Du kannst auch Screenshots der geladenen Seite erstellen. Schau einfach mal in die Anleitung, es ist wirklich relativ einfach.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

01.02.2017, 09:20

Darf ich mal fragen, was du genau machen willst? Du kannst nämlich durchaus in einer Webseite auch Javascript dynamisch nachladen und auch ausführen. Ich weiß allerdings nicht, was hier genau das Ziel überhaupt ist. Geht es um eine Webseite, die Webrequests macht oder geht's darum, dass irgendein Spiel/Programm die Seite laden soll und das Javascript in der Seite ausführen und darüber dann das Websocket öffnen soll? Letzteres wäre aus meiner Sicht kein guter Ansatz.
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]

6

01.02.2017, 09:39

Webrequests


Das Javascript in der Seite ist im Prinzip ein Knopf zum Versenden von Infos ueber Websocket und zum erhalten der Rueckgabe vom Websocket Server, in meinem Fall ist es genau ein Kaufantrag der ueber das Javascript mithilfe von websocket an den Server eines Brokers gesendet wird.

Wenn man die Seite per Webrequest() Funktion aufruft passiert das aber nicht, normalerweise war das mein Plan ein paar Parameter an die Webrequest() Funktion dran zu haengen und dann die Seite mit dem Javascript aufrufen, damit diese ueber Websocket den Kaufauftrag versendet.

Mit PHP Scripten geht sowas ganz gut, die kann man per Webrequest() Funktion einfach aufrufen und ein paar Parameter mit versendet, die auch beachtet werden bei der Ausgabe. Das muesste ich jetzt genau so hinbekommen mit dem Javascript.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

01.02.2017, 13:13

Ich glaube das beantwortet meine Frage nicht. Also nochmal:
Hast du eine Webseite, die etwas per Javascript verschicken soll und das funktioniert nicht richtig? Denn so wie ich es bisher verstehe, hast du ein Programm, was eine Webseite von irgendwo her lädt und dann versucht das auf dieser Seite vorhandene Javascript auszuführen, damit das Javascript irgendwas per Websocket versendet. Wenn das so ist, wäre das Quatsch, da sollte dein eigentliches Programm das Request selbst formulieren und dazu muss es weder die Webseite runterladen, noch das darauf befindliche JavaScript ausführen. Du musst den Inhalt des Requests anlysieren und nachbauen. Das ist aus meiner Sicht der wesentlich vernünftigere Ansatz.
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]

8

01.02.2017, 15:39

Ja das ist auch etwas durcheinander was ich dort mache, weil ich nicht so erfahren bin und mir ein websocket in eigener Sprache bauen kann.

1. Ich muss eine websocket verbindung zu einem webserver machen der Handelsauftraege von mir annimmt, dazu habe ich ein Beispiel in Javascript das auch schon funktioniert, aber nur wenn ich selbst manuell auf der HTML Seite ein Knopf druecke um die Javascript funktion im browser zu starten.

2. Ich will nicht selbst den Knopf druecken sondern ein Programm benutzen das auf meinem PC laeuft, in dem programm habe ich auch Knoepfe, fuer kaufen und verkaufen, wenn ich dort kaufen klicke macht mein programm eine Verbindung ueber Webrequest() zur HTML Seite wo das Javascript steht das die websocket verbindung zum Tradeserver macht.

3. Da bei Aufruf der HTML Seite ueber Webrequest() kein Javascript ausgefuehrt wird, kann ich das auch nicht automatiseren.

4. Ich habe jetzt aber durch ein neuen Umweg das so gebaut:

1. Der Webbrowser bleibt die ganze Zeit eingeschaltet und ich druecke ein Knopf mit dem ich eine Javascript Funktion starte, welche jede Sekunde neu nachschaut in eine PHP Datei ob dort neue Handelsbefehle stehen, wenn ja sendet Sie an den Tradeserver per websocket meine Handelsauftraege, das ganze bin ich jetzt zur Zeit einigermassen am optimieren, damit es Reibungslos funktioniert.

Ich weis das es ziemlich hin und her gemischt ist und sicher auch einfacher geht, aber dazu muss man erst mal einige Jahre mehr Erafhrung haben um sich was einfaches zu bauen, fuer mein Wissensstand ist das momentan nur so ueber diese Umwege moeglich.

Ich hoffe natuerlich das dieses Javascript auch Tag und Nacht im Browser laufen wird ohne manchmal ab zu stuerzen, ohne das ich es jede Stunde neu starten muss, das muss ich mal alles beobachten.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

01.02.2017, 15:45

Ein Websocket ist nichts weiter als ein reguläres Socket, über das Text verschickt wird. Du musst nur wissen wie dieser Text aussehen muss und kannst das in jedem beliebigen Programm über ein Socket jagen. Du kannst auch den Traffic sniffen, wenn du dir nicht 100%ig sicher bist. Jedenfalls die Webseite zu laden und dann das Javascript darin auszuführen, ist mMn kein guter Weg.
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]

Tobiking

1x Rätselkönig

  • Private Nachricht senden

10

01.02.2017, 16:15

Ein Websocket ist nichts weiter als ein reguläres Socket, über das Text verschickt wird. Du musst nur wissen wie dieser Text aussehen muss und kannst das in jedem beliebigen Programm über ein Socket jagen. Du kannst auch den Traffic sniffen, wenn du dir nicht 100%ig sicher bist. Jedenfalls die Webseite zu laden und dann das Javascript darin auszuführen, ist mMn kein guter Weg.

Hinter Websockets steckt schon ein Protokoll (siehe https://tools.ietf.org/html/rfc6455) das implementiert werden muss. Das ist etwas mehr als einfach nur Text über ein TCP Socket zu senden.

Allerdings gibt es für die meisten Sprachen bereits Bibliotheken die fertige Websocket Client-Implementierungen mitbringen. Die Grundaussage das man die Verbindung direkt aus der Anwendung, statt über den Browser, vornehmen sollte, stimmt also noch.

Werbeanzeige