为什么connection.hub.start()有效,但client.all.notify不起作用?

时间:2019-05-22 13:26:08

标签: asp.net-mvc signalr

为什么connection.hub.start()起作用,但client.all.notify为什么不起作用?

我的脚本

// signalr js code for start hub and send receive notification  
var notificationHub = $.connection.notificationHub;  
$.connection.hub.start().done(function () {  
    console.log('Notification hub started');  
});  
//signalr method for push server message to client  
notificationHub.client.notify = function (message) {  
    if (message && message.toLowerCase() == "added") {  
        updateNotificationCount();  
    }  
}  

//Send Notification message to Client
var notificationHub = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
notificationHub.Clients.All.notify("added");

代码Startup.cs

public class Startup
{
    public void Configuration(IAppBuilder app)
    {

        app.MapSignalR();
    }
}

除非我编写alterdatabase查询并与插入查询一起运行,否则我不会收到通知

insert into Contact(Name,Email,Phone,Message,SentDate,Sender) values (N'Test' ,'test@gmail.com','0123456', 'Hello World', GETDATE(), 'Admin')
ALTER DATABASE database SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE ;

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,我使用了jQuery 3.5.1版,并将其更改为2.2.4,并且可以正常工作

答案 1 :(得分:0)

我遇到了同样的问题,并且意识到必须先添加客户端方法,然后再启动集线器。
您只需使用以下代码:

var notificationHub = $.connection.notificationHub;

notificationHub.client.notify = function (message) {
    if (message && message.toLowerCase() == "added") {
        updateNotificationCount();
    }
}

$.connection.hub.start().done(function () {
    console.log('Notification hub started');
});