C# Signalr N层/类库从服务器向客户端获取更新
我是新来的(信号员),我一直在读这方面的文章,但是,我没有发现,我也不知道我是否做得更好 我要做的是,当从windows服务向数据库发送插入时,从我的类库通知向客户端发送更新,因此我执行插入并调用中心(类库通知),您可以向客户发送通知,并实时更新图形 我发出类库通知,从nuget signalr客户端和组件安装,并构建所有组件,但这一切都不起作用,代码如下: 这是Project Windows服务中的方法:C# Signalr N层/类库从服务器向客户端获取更新,c#,model-view-controller,signalr,layer,C#,Model View Controller,Signalr,Layer,我是新来的(信号员),我一直在读这方面的文章,但是,我没有发现,我也不知道我是否做得更好 我要做的是,当从windows服务向数据库发送插入时,从我的类库通知向客户端发送更新,因此我执行插入并调用中心(类库通知),您可以向客户发送通知,并实时更新图形 我发出类库通知,从nuget signalr客户端和组件安装,并构建所有组件,但这一切都不起作用,代码如下: 这是Project Windows服务中的方法: public void ProcessResults() {
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);
}
}
提前感谢过程结果正在创建一个您的客户端未连接到的HubContext。 另外,尝试从客户端调用Hub,至少看看它是否工作,您的客户端所做的只是监听。即:
hub.invoke("notifierInsertExecutionRule", someId);
此外,要从中心外部访问hubcontext,您必须执行以下操作
var hubContext = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
hubContext.Clients.All.updateStatistics("Message");
var-hubContext=GlobalHost.ConnectionManager.GetHubContext();
hubContext.Clients.All.updateStatistics(“消息”);
要做的第一件事是在集线器中重载OnConnected
、onDisconnected
和on重新连接
方法,并在这些方法上放置断点以查看是否正在连接
hub.invoke("notifierInsertExecutionRule", someId);
var hubContext = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
hubContext.Clients.All.updateStatistics("Message");