Mal wieder eine Frage die in Richtung dynamische Anzeige von Ereignissen geht. Es geht um einen browserbasierten Anrufmonitor.
Bei der Fritzbox ist es ja so, das man sich per Telnet verbindet und dann per read anfragt, ob eine Aktivität (eingehender, ausgehender anruf, angenommen, aufgelegt) vorliegt.
Dafür muss der Prozess ja am leben bleiben. Wenn man nun die Aktivitäten in der Console ausgeben oder z.B. in einer Datenbank loggen will ist das ja kein Problem.
Hatte überlegt ob ich die Aktivitäten in eine Datenbank schreibe und dann im Browser per Ajax-Request und Python Abfrage ob etwas neues passiert ist. Dadurch entsteht aber natürlich eine gewisse Verzögerung.
Ich könnte mir aber vorstellen, dass wenn nun ein Anruf reinkommt und angenommen wird, das ganze einfach zu schnell von statten geht, als das es auf diese Art und Weise im Browser dargestellt werden kann.
Für Hinweise, Ratschläge und andere Lösungsansätze bin ich dankbar!
Fritzbox Anrufmonitor im Browser
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
ok, ist also ein eigenes Protokoll?bake hat geschrieben: Bei der Fritzbox ist es ja so, das man sich per Telnet verbindet und dann per read anfragt, ob eine Aktivität (eingehender, ausgehender anruf, angenommen, aufgelegt) vorliegt.
Welcher Prozess? Derjenige, der per telnet Anfragen an die Box sendet?Dafür muss der Prozess ja am leben bleiben.
Wann ist es also eines?Wenn man nun die Aktivitäten in der Console ausgeben oder z.B. in einer Datenbank loggen will ist das ja kein Problem.
Also geht es darum, einen Hinweis auf den Monitor zu pinseln, sobald ein Anruf reinkommt? (Und Du dachtest da an eine Browser, sprich HTML Lösung?)Hatte überlegt ob ich die Aktivitäten in eine Datenbank schreibe und dann im Browser per Ajax-Request und Python Abfrage ob etwas neues passiert ist. Dadurch entsteht aber natürlich eine gewisse Verzögerung.
Ich könnte mir aber vorstellen, dass wenn nun ein Anruf reinkommt und angenommen wird, das ganze einfach zu schnell von statten geht, als das es auf diese Art und Weise im Browser dargestellt werden kann.
Du solltest das Problem noch mal klar spezifizieren, ansonsten kann man auch keine Lösungsansätze geben
Kann natürlich auch sein, dass ich das nur nicht raffe .... aber ein Satz a la: "Ich will das Problem XYZ lösen, welches daran besteht, dass ..." wäre schon sinnvoll
Hier erstmal der Code mit dem man sich die Anrufaktivitäten auf der Console anzeigen lassen kann:
Man kann eventuelle Anrufinformationen per read_very_eager( ) auslesen. Falls momentan kein Anruf aktiv ist bekommt man natürlich auch nichts zurück geliefert.
Es kommt mir irgendwie komisch vor, jede Sekunde per SetInterval und einem AjaxRequest ein PythonSkript auf zu rufen welches sich dann per Telnet verbindet, die Daten abfragt und das Ergebniss zurückgibt, so dass diese im Browser angezeigt werden können.
Ich habe mich vl. etwas unklar ausgedrückt, aber das Problem ist irgendwie schwer in Worte zu fassen. Ich hoffe jetzt wird es etwas klarer?
EDIT: Irgendwie wird der Code hier im Forum nicht richtig eingerückt... Merkwürdig. Alles unter der while True Schleife gehört natürlich eingerückt...
Code: Alles auswählen
def __init__(self):
self.telnet = Telnet( )
self.running = False
def run(self):
while True:
self.ping_ok = self.is_ping_ok_( )
if self.ping_ok:
if self.running == False:
try:
self.telnet.open( get_setting("ip"), int(get_setting("port")) )
self.running = True
except:
self.running = False
else:
if self.running == True:
try:
self.telnet.close( )
self.running = False
except:
self.running = False
if self.running == True:
try:
self.incomming_data = self.telnet.read_very_eager( )
self.data_array = string.split( self.incomming_data, ";" )
except:
print "ERROR"
if ( len( self.data_array ) >= 5 ):
print 'There is some activity:', self.data_array
das wollte ich damit ausdrücken, ja.Hyperion hat geschrieben: Welcher Prozess? Derjenige, der per telnet Anfragen an die Box sendet?
Ich dachte an eine HTML Lösung. Mein Problem ist nun folgendes.Hyperion hat geschrieben: Also geht es darum, einen Hinweis auf den Monitor zu pinseln, sobald ein Anruf reinkommt? (Und Du dachtest da an eine Browser, sprich HTML Lösung?)
Es kommt mir irgendwie komisch vor, jede Sekunde per SetInterval und einem AjaxRequest ein PythonSkript auf zu rufen welches sich dann per Telnet verbindet, die Daten abfragt und das Ergebniss zurückgibt, so dass diese im Browser angezeigt werden können.
Ich habe mich vl. etwas unklar ausgedrückt, aber das Problem ist irgendwie schwer in Worte zu fassen. Ich hoffe jetzt wird es etwas klarer?
EDIT: Irgendwie wird der Code hier im Forum nicht richtig eingerückt... Merkwürdig. Alles unter der while True Schleife gehört natürlich eingerückt...
[i]who we are is but a stepping stone to
what we can become...[/i]
what we can become...[/i]
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Also ehrlich gesagt wird es mir nicht wirklich viel klarer ...
Du willst also wissen, ob die Lösung nicht optimal ist? Kann ich schwer sagen, da die Anforderungen immer noch nicht klar sind! (Schreib doch einfach mal, was Du genau erreichen willst!)
Hast Du denn einen Webserver laufen? Oder wer oder was nimmt den Ajax-Request entgegen?
Wieso muss es eine Lösung per HTML sein? (s. Anforderungen)
Du willst also wissen, ob die Lösung nicht optimal ist? Kann ich schwer sagen, da die Anforderungen immer noch nicht klar sind! (Schreib doch einfach mal, was Du genau erreichen willst!)
Hast Du denn einen Webserver laufen? Oder wer oder was nimmt den Ajax-Request entgegen?
Wieso muss es eine Lösung per HTML sein? (s. Anforderungen)