SignalR客户端功能未被调用

时间:2018-05-10 06:30:18

标签: javascript signalr

所以我有一个在signalR上运行的网络应用程序,我只使用一个带有静态页眉和页脚的HTML,只是一个div来动态更改页面内容。其中一个加载到div的选项卡加载js文件与signalR连接到集线器,一切正常,js文件侦听事件,它触发服务器端方法,但问题是服务器没有调用js中的客户端函数文件。连接ID匹配,它已成功连接到客户端但尚未执行这些功能。我用于验证用户的另一个js文件没有动态添加,工作得很好。

正确调用的hub方法:

public void ClientCall()
{
        IHubContext context;
        context = GlobalHost.ConnectionManager.GetHubContext<LdServiceHub>();
        context.Clients.Client(this.Context.ConnectionId).callbackMethod("50");
}

不会触发的js客户端功能:

$.connection.ldServiceHub.client.callbackMethod = function (item) {
console.log(item);}

这就是我将signalR文件加载到空div中的方法:

var script = document.createElement('script');
script.src = 'Scripts/SignalRConnection.js';
script.type = 'text/javascript';
maindiv.appendChild(script);

它正确加载并正确连接,正常启动集线器功能但从未接收来自服务器的调用并启动客户端功能。

请记住,脚本是动态添加到DOM中的,上面的代码只是代码的代码段示例,因为我使用的src代码包含许多不相关的内容。感谢

编辑:以为我应该提到我使用Owin selfhost来托管连接,一切正常,在用户认证js文件中,这两者之间的唯一区别是第二个是动态添加到html

1 个答案:

答案 0 :(得分:0)

问题在于文件的加载顺序,我首先将html加载到div然后加载到js,但是js工作并听取了事件并向服务器发送了请求,但从未收到来自服务器的任何调用。注意:加载顺序对于js非常重要。