首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Signalr不调用客户端函数

Signalr不调用客户端函数
EN

Stack Overflow用户
提问于 2015-02-20 15:18:17
回答 1查看 2.6K关注 0票数 2

我知道这个问题已经被问到了several times,但是其他人发布的解决方案不是我的解决方案。所以,我希望这个问题还有另一个答案,可以帮我解决。

在服务器上对此进行调试时,它会找到适当的客户端并调用"addAlert“方法。这个Javascript会被初始化,并将“警报就绪”消息写入控制台。

服务器上和客户端代码上都没有错误消息:

代码语言:javascript
复制
$(function () {

    // enable logging for debugging
    $.connection.hub.logging = true;

    // Declare a proxy to reference the hub. 
    var hub = $.connection.alertHub;

    hub.client.addAlert = function (id, title, url, dateTime) {
        console.log(title);
    };

    $.connection.hub.start().done(function () {
        console.log("Alert Ready");
    });
});

09:12:51格林尼治时间-0600(中美洲标准时间) SignalR:客户订阅了集线器‘警报’。jquery.signalR-2.0.0.min.js:8 09:12:51 GMT-0600 (中美洲标准时间) SignalR:与SignalR谈判jquery.signalR-2.0.0.min.js:8 09:12:51 GMT-0600 (中美洲标准时间) SignalR:连接到websocket端点SignalRjquery.signalR-2.0.0.min.js:8 09:12:51 GMT-0600 (中美洲标准时间) SignalR: Websocket打开。jquery.signalR-2.0.0.min.js:8 09:12:51 GMT-0600 (中美洲标准时间) SignalR:现在监视保持活动,警告超时为13333.333333333332,连接丢失超时为20000。

即使在从服务器调用客户端函数之后,也只会发生上述日志:

代码语言:javascript
复制
string dateTime;
foreach(var connection in ConnectionMapping<Guid>.GetConnections(userId))
{
    dateTime = SystemTime.Now().ToString();
    _alertHubContext.Clients.Client(connection).addAlert(alert.Id.Shrink(), title, url, dateTime);
}

其他解决方案都描述了开发人员在连接客户端方法之前调用start()的情况。不过,我不会这样做的。

当服务器方法调用客户端方法时,控制台根本不改变。

我想我已经把范围缩小到这样了:

代码语言:javascript
复制
Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<AlertHub>().Clients.All.hi();

我创建了一个名为hi()的基本客户端方法,它只是弹出一个警报。这根本不管用。

在使用GetHubContext方法调用客户端方法时,似乎没有与客户端代码建立连接。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-10 19:13:50

事实证明,我的客户端函数没有被调用,因为我使用的是自定义依赖解析器。显然,如果您在DependencyResolver类中设置了您的OwinStartup,它会以某种方式阻止调用客户端方法。

因此,moving it到Global.asax,或者更具体地说是Application_Start事件,解决了这个问题:

代码语言:javascript
复制
protected void Application_Start()
{
    GlobalHost.DependencyResolver = new SignalrDefaultDependencyResolver(UnityConfig.Container);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28632306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档