SignalR自托管Windows服务,监听消息

我正在尝试构建一个自托管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(options);

选项是我正在注册的url。 Startup是包含上面signalR映射的启动类。

由于我之前没有建立自助托管服务,所以很少丢失

通常,SignalR提供了一个实时的消息传递环境,它可以将消息推送到客户端,而无需他们请求更新(您已经阅读了介绍,因此足够了)。 无论您是从服务中启动自托管,都不应该有所作为。

根据我对您的场景的理解:您需要使用来自自托管服务的消息。 我想您可能只需要提示SignalR Desktop Client 。 我认为您的应用/服务应该从服务开始,然后充当服务本身的客户端。 这将是最干净的方法。

作为javascript客户端,它充当具有相同function的服务的使用者:

 HubConnection conn = new HubConnection("http://192.168.1.1:8080"); IHubProxy hub = conn.CreateHubProxy("ChatHub"); // call from hub to client hub.On("addMessage", (name, message) => { // Handle incoming data update }); 

从桌面客户端到集线器,反之亦然:

 await hub.Invoke("Send", name, message); 

要使用组,需要在集线器中定义逻辑。 文档使用组提供了可理解的概述。