Hallo miteinander,
ich stehe gerade vor einem Problem, bei dem ich mich vielleicht einfach
verrannt habe...
Ich suche eine Methode wie ein Programm/Script/Server ein Ereignis im
Browser (Firefox) auslösen kann, was dort mit JS verarbeitet werden
kann. Es geht nicht um Datenaustausch, sondern nur um ein Anstossen.
Also sowas wie folgt:
1. Script läuft auf Rechner A im LAN und macht irgendwas
2. Script sendet einen Request an Rechner B
3. Firefox auf Rechner B bekommt das mit
4. JS in einem geöffneten Tab wird angestossen und macht was
Immer wieder per Ajax pollen geht nicht, weil ich auf A keinen Webserver
o.ä. laufen lassen kann. Dadurch scheiden auch Websockets aus.
B ist ein normaler Desktop, da kann ich auch nicht einfach so
ruminstallieren. Zudem das entweder Windows oder Linux sein kann.
Allerdings mit fester lokaler IP.
Ob man Firefox dazu bringen kann, auf einem definierten Port zu lauschen
habe ich aber noch nicht herausgefunden. Natürlich sehr gerne mit Auth.
"Cloud" ist außen vor; das soll auch ohne Internet/Extraserver
funktionieren.
Max schrieb:> Ich suche eine Methode wie ein Programm/Script/Server ein Ereignis im> Browser (Firefox) auslösen kann, was dort mit JS verarbeitet werden> kann. Es geht nicht um Datenaustausch, sondern nur um ein Anstossen.
Gar nicht.
Niemand hat auf einem Rechner von der Ferne aus etwas "anzustossen", da
grätscht hoffentlich meine Firewall dazwischen.
Du meinst push Nachrichten bzw. RSS feeds. Auch die leufen über
regelmässiges Pollen, also B fragt A ob was Neues da ist zum abholen.
Es macht auch absolut überhaupt keinen Sinn, von A aus eine Nachricht zu
verwenden wenn B aus ist und nicht im Netz erreichbar ist oder
beschäftigt ist. Browser sind keine realtime-Betriebssysteme sondern
träge. Zur Visualisierung von Prozesszuständen zu gebrauchen, können
dann auch beendet und wieder geöffnet werden, aber sie werden nicht
"angestossen".
Natürlich kann man zwischen 2 Rechnern auch eine solche Kommunikation
aufbauen, die sollte aber klüger überlegt sein: A sendet nur dann eine
Nachricht an einen über Port und IP Adresse bekannten Rechner B wenn vor
kurzer Zeit (lass es Sekunden oder Minuten sein) B sich bei A als "am
Leben" gemeldet hatte beisielsweise in dem er die zuvor signalisierten
Daten abgeholt hatte.
Auch da geht also die Kommunikation von B aus, nur A antwortet erst mit
Zeitverzögerung, und vor allem versucht A gar keinen "Anstoss" mehr wenn
B schon mal nicht reagiert hatte.
Hallo Max,
seit einiger Zeit nerven mich ab und an einzelne Webseiten mit solch
einem Begehren. Auch in der ct war vor einiger Zeit ein Artikel darüber.
Das Verfahren nennt sich "Web Push Notifications". Hier mal ein Link,
vielleicht hilft es dir...
https://developers.google.com/web/fundamentals/push-notifications/
MfG Sven
Michael B. schrieb:> Niemand hat auf einem Rechner von der Ferne aus etwas "anzustossen", da> grätscht hoffentlich meine Firewall dazwischen.
Die "Ferne" ist relativ, da A&B im gleichen Gebäude, aber verschiedenen
Räumen sind. Dafür kann ich die Firewall problemlos aufmachen. Firewall
ist wichtig, aber wenn Du die für Deinen LAN-Traffic als unabdingbar
notwendig erachtest hast Du ein ganz anderes Problem.
> Es macht auch absolut überhaupt keinen Sinn, von A aus eine Nachricht zu> verwenden wenn B aus ist und nicht im Netz erreichbar ist oder> beschäftigt ist. Browser sind keine realtime-Betriebssysteme sondern> träge. Zur Visualisierung von Prozesszuständen zu gebrauchen, können> dann auch beendet und wieder geöffnet werden, aber sie werden nicht> "angestossen".
Doch, Sinn macht es durchaus, sonst würde ich ja nicht fragen. Es geht
hier um rein Informatives und wenn B zB nachts heruntergefahren ist, bzw
Firefox mal aus ist, dann ist das auch kein Problem. Ich baue keine
Realtime Überwachung eines Atomkraftwerkes.
Denk an UDP. Wenn's ankommt ist es gut, wenn nicht, auch egal.
> Auch da geht also die Kommunikation von B aus, nur A antwortet erst mit> Zeitverzögerung, und vor allem versucht A gar keinen "Anstoss" mehr wenn> B schon mal nicht reagiert hatte.
B muß sich nicht melden, s.o. Was aber auch bedingen würde, daß auf A
ein Socket offen ist der die Anfrage von B erst mal annimmt. Auf A kann
ich aber eben keine listening Sockets machen.
Sven W. schrieb:> Hallo Max,> seit einiger Zeit nerven mich ab und an einzelne Webseiten mit solch> einem Begehren. Auch in der ct war vor einiger Zeit ein Artikel darüber.> Das Verfahren nennt sich "Web Push Notifications". Hier mal ein Link,> vielleicht hilft es dir...
Das habe ich auch schon gefunden, allerdings sagt Moz dazu:
"In der Desktop-Version nutzt Firefox den von Mozilla betriebenen
Push-Dienst. Firefox für Android nutzt eine Kombination aus Mozillas
Push-Dienst und Google Cloud Messaging, um die Nachrichten zu
empfangen."
Würde also meinem Verständnis nach ohne Internet nicht gehen und wohl
auch irgendeine Art von Registrierung bei denen erfordern. Wenn's aber
garnicht anders geht, muß ich das ins Auge fassen.
mal ganz simpel:
zwei Menschen sollen über Entfernung kommunizieren, der eine darf kein
Geräusch von sich geben, der andere ist blind ... so in etwa sind deine
Anforderungen .... ohne "proxy" geht da nichts.
Der Browser wertet HTML Files aus, die er auf port 80 vom Server abruft.
Der Port laesst sich allenfalls aendern, das Konzept aber nicht. Was
aber geht, ist eine dauernd offene Webseite, die vom Server per AJAX
geupdatet wird. Dazu muss hinreichend oft etwas kommen, sodass die
Verbindung nicht abbricht.
AJAX ist ein Addon zu Javascript. Ist in Javascript eingebaut. Der
Server muss die Seite so bearbeiten, dass er eben die AJAX Nachrichten
bringt.
Mit Websockets könntest du sowas umsetzen. Dein Firefox startet eine
socket Verbindung zu Rechner A und wenn der was zu verkünden hat kann er
darüber senden und du kannst im Firefox darauf per Javascript reagieren
Jetzt ist G. schrieb:> Was> aber geht, ist eine dauernd offene Webseite, die vom Server per AJAX> geupdatet wird. Dazu muss hinreichend oft etwas kommen, sodass die> Verbindung nicht abbricht.Java schrieb:> Dein Firefox startet eine socket Verbindung zu Rechner A
Dem steht das hier gegenüber:
Max schrieb:> Auf A kann ich aber eben keine listening Sockets machen.
Die Anforderungen sind … merkwürdig.
Java schrieb:> Mit Websockets könntest du sowas umsetzen. Dein Firefox startet eine> socket Verbindung zu Rechner A
Geht nicht, siehe Eröffnungs-Post.
Max schrieb:> Immer wieder per Ajax pollen geht nicht, weil ich auf A keinen Webserver> o.ä. laufen lassen kann. Dadurch scheiden auch Websockets aus.
d.H. Weder auf A noch auf B läuft irgendein Server, und der Webbrowser
kann keine Verbindung von sich aus zu "A" aufbauen.
Wenn man keinen Rechner "C" dazwischen Will (Egal ob bei
Google(-cloud-messaging), mozilla, oder selbstgestrickt im Haus) muss
der "Server-Teil" also in den Webbrowser wandern, "A" ist der Client.
Eine Möglichkeit dazu wäre eine Browser-Extension, da geht z.B. UDP:
https://developer.chrome.com/apps/sockets_udp
firefox hat/plant was ähnliches, class UDPSocket ...
(TCP(Server)-Sockets gäb's auch, aber die Anwendung hört sich eher nach
UDP an...)
eine andere Möglichkeit ohne Add-on-installation im Browser wäre ein
Java-Applet oder Flash, halte ich aber beides nicht mehr für
State-of-the-Art.