2016-09-08 3 views
1

zu machen Ich verwende Microsoft SignalR, um die Benachrichtigung an Browser zu pushen. Diese Benachrichtigungen werden durch Aktionen anderer Browser ausgelöst. Ich möchte eine Hintergrundaufgabe machen, die manchmal Benachrichtigungen sendet. Zum Beispiel um 12:45:21 möchte ich eine Benachrichtigung an alle angeschlossenen Benutzer senden, auch wenn sie nichts tun. Ist es möglich, das zu tun?Ist es möglich, eine Hintergrundaufgabe mit SignalR

Antwort

3

SignalR bietet Ihnen nicht die Möglichkeit, eine Hintergrundaufgabe auszuführen, aber wenn Sie eine Hintergrundaufgabe ausführen, gibt es nichts, was Sie daran hindert, mit Ihrem SignalR-Hub Clientmethoden aufzurufen und eine beliebige Benachrichtigung zu senden.

Um Ihre Hintergrundaufgabe zu starten und zu steuern, ist Hangfire eine flexible Bibliothek, die helfen sollte.

bearbeiten hinzuzufügen: Da Sie geklärt haben Sie dies in einem Windows-Dienst, eine weitere prominente Bibliothek Erstellung und Bereitstellung von Dienstleistungen zu unterstützen, tun mögen, ist TopShelf

bearbeiten hinzuzufügen: Auch ich aus Ihrem Kommentar sammle dass Sie versuchen, zu verstehen, wie Sie von Ihrer Hintergrundaufgabe auf das Hub-Objekt zugreifen? Es gibt viele Möglichkeiten, dies zu erreichen, aber um die Testbarkeit und Wartbarkeit Ihres Programms zu verbessern, empfehle ich die Verwendung eines IoC (Inversion of Control) Containers, und die notwendigen Referenzen - dieses Tutorial: Dependency Injection in SignalR hat eine Walkthrough mit der Ninject Bibliothek. Diese Walkthrough ist auf asp.net-Hosting ausgerichtet, aber der Link, den Sie gefunden haben, sollte bei der Anpassung an einen Windows-Dienst helfen.

+0

Denkst du, es ist einfach, einen Windows-Dienst zu schreiben, der Informationen an signalR sendet? – Bob5421

+0

Ich glaube, ich habe etwas gefunden: https://code.msdn.microsoft.com/windowsapps/SignalR-self-hosted-in-6ff7e6c3/sourcecode?fileId=116569&pathId=163103385 Denkst du, das kann für mein Problem funktionieren? – Bob5421

+0

In der Tat, was ich wissen will, ist: Im Falle von selbst-Host-Signal R-Programm, wie kann ich einen Timer in Hauptprogramm und Zugriff auf den Hub? – Bob5421

Verwandte Themen