我正在使用 SignalR 开发一个用户跟踪解决方案,作为学习 SignalR 的有趣项目,用于 ASP.NET MVC 应用程序。
目前我可以跟踪登录的用户以及他们在特定页面上停留的时间。如果他们移动到另一个页面,我也会跟踪该页面,并且 SignalR 正在更新的计时器会重置...许多其他功能已实现或部分实现。
我面临的问题是如何获取完整的 url Controller/Action/Parameters
在 SignalR 集线器内?
当我使用HttpContext.Current.Request.Url
网址始终是/signalr/连接.
NOTE:
var hub = $.connection.myHub;
$.connection.hub.start();
位于 _Layout.cshtml 中。
UPDATE:
我尝试过使用
var location = '@HttpContext.Current.Request.Url';
var hub = $.connection.myHub;
$.connection.hub.start().done(function () {
hub.setLocation(location);
});
并且位置已正确传递,但我稍后需要在 Connect() 任务中使用它。
是否有可能做到这一点?
更新2:
这个方法行不通
var hub = $.connection.myHub;
$.connection.hub.start(function(){hub.setLocation(location)});
as the Connect()
之前被调用过。
在我的中心,我有几种方法,但我想将一个值(在我的例子中是一个位置)传递给Connect()
, 那可能吗?
public class MyHub : Hub, IDisconnect, IConnected
{
public Task Connect()
{
//do stuff here
//and i would like to have the **location** value
}
public Task Disconnect()
{
//do stuff here
}
}
Update 3
在之前使用QueryString传递数据Connect()
occurs.
var location = '@HttpContext.Current.Request.Url';
var hub = $.connection.myHub;
$.connection.hub.qs = "location= + location;
$.connection.hub.start();