[英]SignalR self hosted windows service, listening for messages
我正在嘗試構建一個自托管SignalR的Windows服務。
我已經閱讀了ASP.Net上的SignalR Self-Host等教程
我注意到,至少看起來,它們是基於廣播信息,並且似乎無法找到任何有關聆聽的內容。
我需要收聽服務中的消息以及廣播。
我們已經有了背板設置 - 它與網站使用的設置相同。
在一個網站上,我可以通過Javascript加入一個群組。 如何在自托管SignalR服務中加入組。
在網站中,我在集線器上注冊回調。 如何在自托管服務中注冊相同的回調?
我有一些示例代碼,用於注冊和啟動SignalR:
GlobalHost.DependencyResolver.UseSqlServer(Settings.Default.ISDBContext);
app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
HubConfiguration hubConfig = new HubConfiguration()
{
EnableDetailedErrors = true,
EnableJSONP = true,
};
map.RunSignalR(hubConfig);
});
然后我像這樣啟動我的webApp:
SignalR = WebApp.Start<Startup>(options);
選項是我正在注冊的網址。 Startup是包含上面signalR映射的啟動類。
由於我之前沒有建立自助托管服務,因此很少丟失
通常,SignalR提供了一個實時的消息傳遞環境,它可以將消息推送到客戶端,而無需他們請求更新(您已經閱讀了介紹,因此足夠了)。 無論您是從服務中啟動自托管,都不應該有所作為。
根據我對您的場景的理解:您需要使用來自自托管服務的消息。 我想你可能只需要一個SignalR Desktop Client的提示。 我認為您的應用/服務應該從服務開始,然后充當服務本身的客戶端。 這將是最干凈的方法。
作為javascript客戶端,它充當具有相同功能的服務的使用者:
HubConnection conn = new HubConnection("http://192.168.1.1:8080");
IHubProxy hub = conn.CreateHubProxy("ChatHub");
// call from hub to client
hub.On<string, string>("addMessage", (name, message) =>
{
// Handle incoming data update
});
從桌面客戶端到集線器,反之亦然:
await hub.Invoke<string, string>("Send", name, message);
要使用組,需要在集線器中定義邏輯。 文檔使用組提供了可理解的概述。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.