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();
        }
    }
}

提前致谢

Signalr N 层/类库从服务器获取到客户端的更新

该过程的结果是创建一个不是客户端连接到的 HubContext。还可以尝试从客户端调用 Hub,至少看看它是否有效,您的客户端所做的只是侦听。IE :

hub.invoke("notifierInsertExecutionRule", someId);

此外,要从中心外部访问您的集线器上下文,您必须执行以下操作。

var hubContext = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
hubContext.Clients.All.updateStatistics("Message");