我正在使用SignalR-1.0.0-rc2。我使用跨域SignalR,因为移动设备上的一些浏览器仍然只允许每个域有两个连接。所以我有一个SignalR域名和一个网络域名。服务器端,它们是相同的。
我的实现适用于Opera、Firefox、Chrome、Safari和IE10。它不适用于IE9、IE8和IE7。
jQuery.support.cors = true;
var connection = $.connection.globalHub;
$.connection.hub.url = SignalRDomain;
$.connection.hub.logging = true;
$.connection.hub.qs = "UserID="+UserID+"&Login="+UserLogin+"&UserHash="+UserHash;
connection.client.MyLocalFunction = function () {
// do something
}
$.connection.hub.start();
我打开了日志记录。IE9/8/7控制台向我显示了两条SignalR跟踪消息:[13:54:37 UTC+0100]信号R:自动检测到跨域url。[13:54:37 UTC+0100]信号R:正在与http://live.mydomain.de/signalr/negotiate"。
如果我查看调试器的"网络"选项卡,我没有看到对服务器的任何调用。因此,SignalR似乎在调试消息之后就死了。
有什么想法吗?
因此,请求失败的原因如下:带有CORS的IE9jQueryAJAX返回"访问被拒绝";
您可以通过删除行"jQuery.support.cors=true"来解决此问题。
对于SignalR 1.0.0-rc2,它只会起作用,但对于Signal R 1.0.0及以上的所有版本,您需要在地图中心中启用跨域调用:SignalR跨域不适用于IE10 以外的浏览器