Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在JQuery UI小部件中不触发信号器回调_Javascript_C#_Asp.net_Jquery Ui_Signalr - Fatal编程技术网

Javascript 在JQuery UI小部件中不触发信号器回调

Javascript 在JQuery UI小部件中不触发信号器回调,javascript,c#,asp.net,jquery-ui,signalr,Javascript,C#,Asp.net,Jquery Ui,Signalr,我试图创建一个jQueryUI小部件,它使用SignalR(2.2.0)从服务器接收实时更新。在服务器上调用方法可以正常工作,但是从服务器调用客户机回调不会在客户机上触发 正如这里所建议的,我已经在客户端上启用了日志记录:我可以在控制台中看到连接设置得很好,但是从未调用客户端方法。没有任何类型的错误消息。在启动连接之前,我还在集线器代理上定义了客户端方法,如下所示: _bindClientCallbacks: function () { theHub.client.broadCastTo

我试图创建一个jQueryUI小部件,它使用SignalR(2.2.0)从服务器接收实时更新。在服务器上调用方法可以正常工作,但是从服务器调用客户机回调不会在客户机上触发

正如这里所建议的,我已经在客户端上启用了日志记录:我可以在控制台中看到连接设置得很好,但是从未调用客户端方法。没有任何类型的错误消息。在启动连接之前,我还在集线器代理上定义了客户端方法,如下所示:

_bindClientCallbacks: function () {
    theHub.client.broadCastToClient = function (message) {
        twr.log(message);
    };
}
_startSignalRClient: function () {
    $.connection.hub.logging = true;
    $.connection.hub.start()
        .done(function () {
            twr.log("Connected to SignalR hub, id=" + $.connection.hub.id);
        })
        .fail(function () {
        });
}
然后,我启动集线器连接,如下所示:

_bindClientCallbacks: function () {
    theHub.client.broadCastToClient = function (message) {
        twr.log(message);
    };
}
_startSignalRClient: function () {
    $.connection.hub.logging = true;
    $.connection.hub.start()
        .done(function () {
            twr.log("Connected to SignalR hub, id=" + $.connection.hub.id);
        })
        .fail(function () {
        });
}
这些方法在JQuery小部件的“\u create()”函数中调用,如下所示:

_create: function () {
    theHub = $.connection.DataImportHub;
    this._bindClientCallbacks();
    this._startSignalRClient();
} 
这很好,我可以获得一个id为的有效连接。我还可以从客户端调用服务器方法。但是,当我尝试从服务器调用客户端上的
broadCastToClient
方法时,如下所示:

public void BroadCastToClient(string userId, string message)
{
    var hubContext = GlobalHost.ConnectionManager.GetHubContext<DataImportHub>();
    foreach (var connectionId in _connections.GetConnections(userId))
    {
        hubContext.Clients.Client(connectionId).broadCastToClient(message);
    }
}
public void broadcastoclient(字符串userId,字符串消息)
{
var hubContext=GlobalHost.ConnectionManager.GetHubContext();
foreach(在_connections.GetConnections(userId)中的var connectionId)
{
hubContext.Clients.Client(connectionId).broadCastToClient(消息);
}
}
客户机上没有发生任何事情。。即使服务器确实找到了与我在客户端上获得的连接id对应的有效连接


我遗漏了什么?

刚刚通过阅读本文找到了解决方案。显然,在Owin启动类中设置自定义信号器依赖项解析器会中断javascript回调。将依赖项解析器设置代码移动到Global.asax中的Application_Start即可。我真的不明白为什么会发生这种事

启动时DI设置错误。cs

app.Map("/signalr", map =>
{
    var hubConfiguration = new HubConfiguration
    {
        Resolver = new NinjectSignalRDependencyResolver(new StandardKernel())
    };
    map.RunSignalR(hubConfiguration);
});
在Global.asax中良好的DI设置

protected void Application_Start()
{
    GlobalHost.DependencyResolver = new NinjectSignalRDependencyResolver(new StandardKernel());
}

刚刚通过阅读这篇文章找到了解决方案。显然,在Owin启动类中设置自定义信号器依赖项解析器会中断javascript回调。将依赖项解析器设置代码移动到Global.asax中的Application_Start即可。我真的不明白为什么会发生这种事

启动时DI设置错误。cs

app.Map("/signalr", map =>
{
    var hubConfiguration = new HubConfiguration
    {
        Resolver = new NinjectSignalRDependencyResolver(new StandardKernel())
    };
    map.RunSignalR(hubConfiguration);
});
在Global.asax中良好的DI设置

protected void Application_Start()
{
    GlobalHost.DependencyResolver = new NinjectSignalRDependencyResolver(new StandardKernel());
}

确保在
\u startSignalRClient
之前调用
\u bindClientCallbacks
…我在JQuery UI小部件的_create函数中在_startSignalRClient之前调用_bindClientCallbacks(为了澄清,我将该函数添加到帖子中)。。因此,我认为这不是问题所在。无法在我的计算机上解决
hubContext.Clients.Client()
,请尝试
hubContext.Client()
。IHubContext接口仅公开属性客户端和组,因此我无法对其调用Client()。我尝试将消息发送到hubContext.Clients.All,但这也不会触发回调..只是一个问题:为什么不使用
huContext.Clients.All.broadcastoclient(消息)
?确保在
\u startSignalRClient
之前调用
\u bindClientCallbacks
…我在JQuery UI小部件的_create函数中调用_bindClientCallbacks,在_startSignalRClient之前调用(我将该函数添加到帖子中以供澄清)。。因此,我认为这不是问题所在。无法在我的计算机上解决
hubContext.Clients.Client()
,请尝试
hubContext.Client()
。IHubContext接口仅公开属性客户端和组,因此我无法对其调用Client()。我尝试将消息发送到hubContext.Clients.All,但这也不会触发回调..只是一个问题:为什么不使用
huContext.Clients.All.broadcastoclient(消息)