SignalR 自托管 windows 服务,监听消息
SignalR self hosted windows service, listening for messages
我正在尝试构建一个自托管 SignalR 的 windows 服务。
我已阅读 SignalR Self-Host on ASP.Net
等教程
我注意到,至少看起来,它们是基于广播消息,似乎找不到任何关于收听的内容。
我需要从服务中收听消息以及广播。
我们已经有了背板设置 - 与网站使用的背板相同。
在网站中,我可以通过 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);
选项是我正在注册的 url。 Startup 是包含上述 signalR 映射的启动 class。
这里有点迷失,因为我之前没有构建过自托管服务
一般来说,SignalR 提供了一个实时消息传递环境,其好处是它可以将消息推送给客户端而无需他们请求更新(您已经阅读了介绍,已经足够了)。是否从服务中启动自托管应该不会有什么不同。
根据我从您的场景中了解到的情况:您需要使用来自自托管服务的消息。我认为您可能只需要 SignalR Desktop Client 的提示。我认为您的 app/service 应该启动服务,然后充当服务本身的客户端。这将是最干净的方法。
作为 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);
要使用群组,需要在您的中心内定义逻辑。文档 Working with groups 提供了一个易于理解的概述。
我正在尝试构建一个自托管 SignalR 的 windows 服务。
我已阅读 SignalR Self-Host on ASP.Net
等教程我注意到,至少看起来,它们是基于广播消息,似乎找不到任何关于收听的内容。
我需要从服务中收听消息以及广播。
我们已经有了背板设置 - 与网站使用的背板相同。
在网站中,我可以通过 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);
选项是我正在注册的 url。 Startup 是包含上述 signalR 映射的启动 class。
这里有点迷失,因为我之前没有构建过自托管服务
一般来说,SignalR 提供了一个实时消息传递环境,其好处是它可以将消息推送给客户端而无需他们请求更新(您已经阅读了介绍,已经足够了)。是否从服务中启动自托管应该不会有什么不同。
根据我从您的场景中了解到的情况:您需要使用来自自托管服务的消息。我认为您可能只需要 SignalR Desktop Client 的提示。我认为您的 app/service 应该启动服务,然后充当服务本身的客户端。这将是最干净的方法。
作为 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);
要使用群组,需要在您的中心内定义逻辑。文档 Working with groups 提供了一个易于理解的概述。