在iframe内部没有接收到SignalR

时间:2017-09-22 01:31:05

标签: javascript asp.net-mvc iframe

我的网络应用程序利用从API集线器发送的signalR,适用于所有浏览器。现在,当我尝试在基本html页面中的iframe中添加我的Web应用程序的链接时,我的Web应用程序不会执行我的连接方法。

这是我的网络应用程序中的代码片段:

$.connection.hub.url = 'myUrl';
$.connection.hub.logging = true;
var varHub= $.connection.MyHub;
$.connection.hub.start()
    .done(function () { console.log("Signal R connected"); //this is being executed })
    .fail(function () { console.log("Could not Connect to signal R hub!"); });

$.connection.hub.disconnected(function () {
    setTimeout(function () {
        $.connection.hub.start();
    }, 5000); // Re-start connection after 5 seconds
});

//Methods to be called by the server for signal R connections
varHub.client.start= function () {
    //this is not being called
    //do something
};

正如我所说,当我通过网址直接访问它时,我没有任何问题。只有当我尝试在iframe中插入网址时才会出现此问题。

我是这样做的:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <meta http-equiv="X-UA-Compatible" content="IE=11">
    </head>
    <body width="1280" height="736" style="margin:0;padding:0;overflow:hidden;border:0px;background:#000000;">
        <iframe 
            src="http://myUrl/Home/Index?Id=someId" style="width:1280px;height:720px;margin:0;paddin:0;overflow:hidden;border:0px;"/>
            scrolling="no"/>
    </body>
</html>

注意:我的目标浏览器是IE 11。

任何想法都将是一个很大的帮助!感谢。

1 个答案:

答案 0 :(得分:0)

对于将来可能遇到此问题的任何人,此参数修复了我的问题。

来源:Here

  

协商传输需要一定的时间和客户端/服务器资源。如果已知客户端功能,则可以在启动客户端连接时指定传输。以下代码片段演示了如何使用Ajax Long Polling传输启动连接,如果已知客户端不支持任何其他协议,则使用该连接:

$.connection.hub.start({ transport: 'longPolling' })