Hallo,
ich habe ein ASP.NET Projekt bei dem man interne Nachrichten versenden kann.
Ist nix anderes dass meine über ein Formular einen neuen Eintrag in die Datenbank (MS SQL 2008R2)
speichert. Man gibt im Formular den Empfänger (UserID) an.
Der Empfänger erhält auch die Nachricht (geschieht in der MasterPage). Dabei wird eine Benachrichtigung aufgepopt.
Allerdings popt die Nachricht nur auf wenn der Empfänger einen Event (z.B Button Click Event) auslöst.
Jetzt meine Frage bzw. mein Problem:
Gibt es eine Möglichkeit, dass einem User die Nachrichten-Benachrichtigung aufpopt oder angezeigt wird ohne dass ein Event ausgelöst wird, also wenn die Maus und Tastatur ruhig bleibt.
Habs auch schon mit dem Timer versucht (innerhalb der MasterPage). Dabei wird aber bei jedem Interwall die ContentPage aktualisiert.
Selbst Google hilft mir nach zwei Tagen nicht mehr weiter.
Hat jemand Tipps für mich wie das zu lösen ist?
Das Schicksal bevorzugt jene die bereit sind.
WebSockets oder SignalR (zweiteres unterstützt durch Fallbacks die meisten Browser).
Nur als Hinweis am Rande: WebForms (das Du nutzt) ist nicht unbedingt soooo geeignet für RIA 2.0 Anwendungen. Viel Javascript könnte mit Deinem ViewState und Co kollidieren und Seiteneffekte auslösen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Viel einrichten musst da nicht.
SignalR downloaden, Hub definieren -> 90% fertig.
Halt Dich am besten an das Tutorial ASP.NET SignalR Hubs API Guide - Server (C#)
Wenn Du das dann mal fertig hast, dann bietet sich an einen Scheduler in den Hub zu integrieren, der dann die Nachrichten raus puscht. So hast Du eine gute Basis für eine Skalierung und die Last hagelt Dir nicht die Anwendung kaputt (falls sie mal groß (mehrer Tausend Anwender) werden sollte).
Hierfür wird dann (auf das Beispiel bezogen) ein Producer-Consumer-Pattern in den "StockTicker" integriert, der dann die Nachrichten über "n"-Tasks über den "StockTickerHub" raus pusht.
Die Anwendung kommuniziert hierbei nur mit der Klasse StockTicker über Methoden wie "AddMessageToQueue". StockTicker pusht dann die Nachricht über "PushMessageToClient(s)" von StockTickerHub.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Danke dir.
Hört sich spannend an 😉
Ich werds testen.
Danke nochmal.
Das Schicksal bevorzugt jene die bereit sind.