应用程序启动时如何调用 SignalR hub?
How to call SignalR hub when application start?
我的应用程序中有一些经常性的后台作业使用 Hangfire:
public class NotificationWeeklyHub : Hub
{
public void SendNotificationWeekly()
{
/*Recurring Job
Clients.All.SendNotificationWeekly();
*/
// code....
}
}
所以我想为我的用户发送通知,在这种情况下我想在应用程序启动时调用我的集线器,那么如何以这种方式调用我的集线器?
PS:我的调用集线器的客户端代码:
<script src="~/Scripts/jquery.signalR-2.1.2.min.js"></script>
<script src="~/signalr/hubs"></script>
<script src="~/Scripts/toastr.min.js"></script>
<script>
var notifyWeekly = $.connection.notificationWeekly;
notifyWeekly.client.sendNotificationWeekly = function () {
toastr.success("Message");
};
$.connection.hub.start().done(function() {
notifyWeekly.server.sendNotificationWeekly();
});
</script>
我的目标只是在那些特定时间发送通知(在我的例子中使用 toastr 库)。有什么想法吗?
提前致谢
类似的东西可以做到:
protected void Application_Start()
{
// get the hub from the globalHost
IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<NotificationWeeklyHub>();
// send the message to all clients, make sure that the method is camelCase.
hubContext.Clients.All.sendNotificationWeekly("your message");
}
编辑:
现在关于您的集线器代码,看起来您的方法只是调用客户端,因为您的集线器中的任何 public 方法都可供客户端使用,您可以清理您的集线器代码并将其更改为如下:
public class NotificationWeeklyHub : Hub
{
}
我的应用程序中有一些经常性的后台作业使用 Hangfire:
public class NotificationWeeklyHub : Hub
{
public void SendNotificationWeekly()
{
/*Recurring Job
Clients.All.SendNotificationWeekly();
*/
// code....
}
}
所以我想为我的用户发送通知,在这种情况下我想在应用程序启动时调用我的集线器,那么如何以这种方式调用我的集线器?
PS:我的调用集线器的客户端代码:
<script src="~/Scripts/jquery.signalR-2.1.2.min.js"></script>
<script src="~/signalr/hubs"></script>
<script src="~/Scripts/toastr.min.js"></script>
<script>
var notifyWeekly = $.connection.notificationWeekly;
notifyWeekly.client.sendNotificationWeekly = function () {
toastr.success("Message");
};
$.connection.hub.start().done(function() {
notifyWeekly.server.sendNotificationWeekly();
});
</script>
我的目标只是在那些特定时间发送通知(在我的例子中使用 toastr 库)。有什么想法吗?
提前致谢
类似的东西可以做到:
protected void Application_Start()
{
// get the hub from the globalHost
IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<NotificationWeeklyHub>();
// send the message to all clients, make sure that the method is camelCase.
hubContext.Clients.All.sendNotificationWeekly("your message");
}
编辑:
现在关于您的集线器代码,看起来您的方法只是调用客户端,因为您的集线器中的任何 public 方法都可供客户端使用,您可以清理您的集线器代码并将其更改为如下:
public class NotificationWeeklyHub : Hub
{
}