在signalR集线器连接中传递相对URL

时间:2018-10-30 10:37:22

标签: angularjs asp.net-web-api signalr signalr-hub

我正在尝试在angularJS中实现signalR, 我想将相对网址传递到集线器连接,但是它正在生成当前网址(托管我的angular应用程序的网址)

我的API基本网址:Map

我的角度应用程序在

上运行
http://localhost:81/NrsService/api/TestSignal

这是我的signalR设置:

http://localhost:81

就像它在$.connection.hub.url = "/NrsService/api/TestSignal"; //Getting the connection object connection = $.hubConnection(); 发送请求,但我希望它是http://localhost:81/signalr/negotiate?

1 个答案:

答案 0 :(得分:0)

您必须编辑在定义客户端代理的位置生成的JavaScript代码。从SignalR 2.4.0开始,定义了createHubProxies函数,您可以在其中找到以下代码行:

signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false });

将其更改为以下内容以防止“ / signalr”以您的请求结尾:

signalR.hub = $.hubConnection("", { useDefaultPath: false });

此后,您只需更改网址即可,该网址应称为您在问题中提供的方式,例如:

$.connection.hub.url = "/NrsService/api/TestSignal";

如果您还想动态更改此Url,则可以使用document.location属性。就我而言,我做了这样的事情:

var subPath = document.location.pathname.substr(0, document.location.pathname.lastIndexOf("/"));
$.connection.hub.url = subPath;      // subpath equals to "/NrsService/api"

希望这会有所帮助。