Signalr N 层/类库从服务器获取到客户端的更新
本文关键字:获取 客户端 更新 服务器 类库 Signalr | 更新日期: 2023-09-27 18:30:58
我是这个(Signalr)的新手,我一直在阅读这个,但是,我没有找到,我不知道我是否以更好的形式做事。
我想做的是从我的类库通知从 Windows 服务发送插入到数据库时向客户端发送更新,所以我执行插入并调用中心(类库通知),您将通知发送到客户和有关图形的实时更新
我制作类库通知,从 nuget 信号器客户端和组件安装,并构建所有内容,但这不起作用,这是代码:
这是 Project Windows 服务中的方法:
public void ProcessResults()
{
RuleDto ruleToExecute;
using (var svc = new ServiceWrapper<ICentralMonitor>(ConfigurationManager.AppSettings["MonitorBinding"]))
{
ruleToExecute = svc.Channel.GetRulesToApplyByValidationGroup(Id, _results.ToDictionary(m => m.Key.Id, pair => pair.Value));
}
if (ruleToExecute != null)
{
foreach (var action in ruleToExecute.Actions)
{
object[] parameters = { Id };
InvokeHandler.InvokeAction(action.Assembly, action.Namespace, action.Class, action.Method, parameters);
}
**NotificationHub notifier = new NotificationHub();
notifier.NotifierInsertExecutionRule(Id);**
}
UpdateCurrentState();
}
This is the Project class library Notifications: (This is all what have this project)
public class NotificationHub : Hub
{
public async void NotifierInsertExecutionRule(long id)
{
var stats = await StatisticsController.CreateModelAsync(id);
hubContext.Clients.All.updateStatistics(stats);
}
}
在项目网络(客户端)中,我也从 Nuget 信号器安装到这个项目中。
我只是警惕地看到这项工作,但什么都不做。
<script type="text/javascript">
var connection = $.hubConnection();
var hub = connection.createHubProxy("NotificationHub");
hub.on("updateStatistics", function (statistics) {
alert("Se Actualizo");
});
connection.start();
</script>
而创业公司:
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(ADC.Monitor.Monitor.Web.App_Start.Startup))]
namespace ADC.Monitor.Monitor.Web.App_Start
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
// Any connection or hub wire up and configuration should go here
app.MapSignalR();
}
}
}
提前致谢
该过程的结果是创建一个不是客户端连接到的 HubContext。还可以尝试从客户端调用 Hub,至少看看它是否有效,您的客户端所做的只是侦听。IE :
hub.invoke("notifierInsertExecutionRule", someId);
此外,要从中心外部访问您的集线器上下文,您必须执行以下操作。
var hubContext = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
hubContext.Clients.All.updateStatistics("Message");