Das Problem ist nicht, dass die Information zu dem Controller kommt. Das Problem ist, dass der Controller ja nur bei einem Request angesprochen wird.
Der Ablauf ist ja:
- Der Client sendet einen HTTP Request. Also ein GET/POST/... Request mit einem Pfad wie /images
- Das Framework stellt ja den Web Server, da kommt also der Request an. Das Framework prüft dann den Pfad und die Methode und stellt dann Fest: Da muss der ImageController mit der Methode showAll ran.
- Jetzt wird die Methode aufgerufen. In der Methode des Controllers hast du dann das Model aufgebaut und gibst dann zurück "showAll" oder so.
- Da greift das Framework wieder ein. "showAll" wird dann ausgewertet. Das showAll Template wird also genommen und mit dem Model ausgewertet.
- Das Ergebnis der Auswertung ist die HTML Seite und die wird dann an den Client zurück gesendet.
Damit ist der Request erledigt. Da ist also kein Platz für irgend einen Callback oder so. Das ist auch unnötig an der Stelle, denn in dem Punkt, bei dem der Controller mit der spezifischen Methode aufgerufen wurde, musst Du den aktuellen Stand ermitteln. Ein laufendes Update ist also egal.
Wichtig ist: Es macht keinen Sinn, diese Seite immer ganz aufzubauen. Hier solltest Du mit AJAX, also asynchronem Javascript arbeiten. Die eigentliche Seite kann also im Hintergrund immer wieder neue Requests absenden an einen Webservice. Da wäre die Idee, das klein zu halten. Also alle 60 Sekunden oder so fragt der Browser beim Server: Gibt es etwas Neues? (Das kann z.B. über die letzte ID gehen oder so).
Wenn es etwas neues gibt, dann solltest Du lediglich die Differenz abfragen. Also keine ganze Seite sondern nur Teile, die Du dann per Javascript einfügst in der bestehenden Seite.
Ein erster Schritt kann aber auch einfach etwas sein, was Du hier im Forum findest: Du blendest dann einfach ein: "Es gibt neue Bilder, bitte aktualisieren." oder so und da kann der Anwender drauf klicken und die ganze Seite lädt neu. Dann hast Du es relativ einfach gehalten in einem ersten Schritt. (Und Du hast etwas, das man dann nach und nach ausbauen kann!)
Das einfach einmal, um eine einfache Lösung etwas mehr im Detail zu erläutern.