【发布时间】:2018-10-20 08:49:18
【问题描述】:
所以我有一个在 signalR 上运行的网络应用程序,我只使用一个带有静态页眉和页脚的 HTML 和一个 div 来动态更改页面内容。加载到 div 的选项卡之一加载带有信号R连接到集线器的 js 文件,一切正常,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 的,上面的代码只是代码的 sn-p 示例,因为我使用的 src 代码包含许多不相关的东西。谢谢
编辑:我想我应该提到我使用 Owin selfhost 来托管连接,在用户身份验证 js 文件中一切正常,这两者之间的唯一区别是第二个是动态添加到 html 中的
【问题讨论】:
标签: javascript signalr