【发布时间】:2014-11-19 17:36:07
【问题描述】:
我是这个 (Signalr) 的新手,我一直在阅读这个,但是我没有找到,而且我不知道我是否能以更好的形式做这些事情。
我想要做的是从我的类库通知向客户端发送更新,当从 Windows 服务向数据库发送插入时,我执行插入并调用您将通知发送到的集线器(类库通知)客户和图形的实时更新
我制作了类库通知,从 nuget signalr 客户端和组件安装,并构建了所有但这不起作用,这是代码:
这是 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);
}
}
在项目 web(客户端)中,我也在这个项目中从 Nuget signalr 安装。
我只是警惕地看到这项工作,但什么也不做。
<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();
}
}
}
提前致谢
【问题讨论】:
-
首先要做的是重载集线器中的
OnConnected、onDisconnected和OnReconnecting方法,并在它们上放置断点以查看是否正在连接
标签: c# model-view-controller signalr layer