簡體   English   中英

SignalR自托管Windows服務,監聽消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM