Hallo
Ich wollte in Sachen WebSocketServer was "Neues" ausprobieren, womit ich immer meine Probleme habe und zwar möchte ich gerne in einer HTML Datei externe JavaScript Dateien einbinden.
Um WebSocketServer zu nutzen, benutzt ich einfach:
http://code.google.com/p/bauglir-websocket/
diese Lib.
Das Event: OnConnectionSocket
wird zwei mal aufgerufen, aber in beiden Fällen hat der ResourceName nur '/' als Inhalt.
Wenn ich mir jetzt in der Datei "WebSocket2" die Methode "TWebSocketServer.CreateServerConnection" ansehe und mir dort
fncResourceName ausgeben lasse, sehe ich das diese Methode 4 mal aufgerufen wird und zwei mal mit dem richtigen Inhalt.
Warum ist im OnConnectionSocket Event welches ich in der Unit uplWebSocket ist nur '/' drin im Parameter ResourceName.
Ich suche bereits seit Stunden im Internet, nach einer Möglichen Lösung.
Im Anhang findet ihr ein Beispiel Projekt. Welches ich extra Erstellt habe. Ich hoffe ich habe alle Dateien reinkopiert.
Also, mein Ziel ist es Externe Dateien mit dem WebSocketServer zu laden wie z.b. im header angegebene JavaScript Dateien oder CSS Dateien und der gleichen.
Der Hintergrund ist: So könnte ich Fertige JavaScript Lib's einsetzten um die Dastellung der Daten zu verbessern.
WebSocketServer externe javaScript Dateien laden?
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
WebSocketServer externe javaScript Dateien laden?
- Dateianhänge
-
- ForumPrj.zip
- (1.66 MiB) 178-mal heruntergeladen
MFG
Michael Springwald
Michael Springwald
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: WebSocketServer externe javaScript Dateien laden?
So wie es aussieht habe ich eine Möglichkeit gefunden, bin mir aber noch nicht 100% sicher:
In der Datei WebSocket2, wird das Event onLoadDefaultSite aufgerufen. Das habe ich hinzugefügt um eine index.html zu laden.
jedoch ohne zu wissen, dass es hier noch andere Anfragen vom WebClient gibt beim laden einer Seite. Diese Stelle habe ich nun als Beispiel so geändert:
Ob das nun richtig ist oder nicht, aber es scheint bei Google-Chrome jedenfalls zu klappen. alert wird ausgeführt und eine Fehlermeldung in der Console ist auch verschwunden nur noch das mit dem favoicon.ico ist noch vorhanden. Aber ich bin erst mal ein Schritt weiter gekommen, denke ich.
ich werde das Event ändern, so dass ich das Nachladen von angeforderten resource auslagern kann.
In der Datei WebSocket2, wird das Event onLoadDefaultSite aufgerufen. Das habe ich hinzugefügt um eine index.html zu laden.
jedoch ohne zu wissen, dass es hier noch andere Anfragen vom WebClient gibt beim laden einer Seite. Diese Stelle habe ich nun als Beispiel so geändert:
Code: Alles auswählen
if assigned(fOnLoadDefaultWebSite) then begin
if fncResourceName = '/' then begin
fOnLoadDefaultWebSite(OutputDataString);
;
Header:='HTTP/1.0 200 '+#13#10+
'Content-type: Text/Html; charset=ISO-8859-1'+#13#10+
'Content-length: '+inttostr(Length(OutputDataString))+#13#10+
'Connection: close'+#13#10+#13#10;
aSocket.SendString(Header+OutputDataString);
end
else begin
if fncResourceName = '/scriptA.js' then begin
OutputDataString:='function Testa() {'+
'alert("test");'+
'} Testa();';
Header:='HTTP/1.1 200'+#13#10+
'Content-type: text/javascript'+#13#10+
'Content-length: '+inttostr(Length(OutputDataString))+#13#10+
'Connection: close'+#13#10+#13#10;
aSocket.SendString(Header+OutputDataString);
end;
end
end;
Ob das nun richtig ist oder nicht, aber es scheint bei Google-Chrome jedenfalls zu klappen. alert wird ausgeführt und eine Fehlermeldung in der Console ist auch verschwunden nur noch das mit dem favoicon.ico ist noch vorhanden. Aber ich bin erst mal ein Schritt weiter gekommen, denke ich.
ich werde das Event ändern, so dass ich das Nachladen von angeforderten resource auslagern kann.
MFG
Michael Springwald
Michael Springwald