Forum: PC-Programmierung Wie Browser von Server/Programm aus benachrichtigen?


von Max (Gast)


Lesenswert?

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.

von Michael B. (laberkopp)


Lesenswert?

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.

von Sven W. (Gast)


Lesenswert?

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

von Max (Gast)


Lesenswert?

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.

von G. H. (schufti)


Lesenswert?

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.

von Purzel H. (hacky)


Lesenswert?

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.

: Bearbeitet durch User
von Java (Gast)


Lesenswert?

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

von Rolf M. (rmagnus)


Lesenswert?

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.

von Planlos (Gast)


Lesenswert?

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.

von Max (Gast)


Lesenswert?

Nun, allem Anschein nach gibt es wohl doch Möglichkeiten sowas zu 
machen:
https://stackoverflow.com/questions/28441539/opening-tcp-socket-from-firefox-plugin

Das muß ich mir mal in Ruhe zu Gemüte führen und mich wohl auch mit 
Firefox Addons beschäftigen.

von Andre (Gast)


Lesenswert?

Es gibt doch bestimmt einen kleinen Webserver als portable Version. Da 
würde ich eher den anwerfen als den Firefox dazu zu verbiegen..

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.