Mat*_*cic 10 asp.net asp.net-mvc-4 signalr signalr-hub
我正在开发一个使用SignalR的用户跟踪解决方案,作为学习SignalR的有趣项目,用于ASP.NET MVC应用程序.
目前,我可以跟踪已记录的用户以及他们在特定页面上的时长.如果他们移动到另一个页面,我也跟踪它并且SignalR正在更新的计时器重置...许多其他功能被实现或部分实现.
我面临的问题是如何在SignalR集线器内获得完整的URL控制器/动作/参数?
当我使用HttpContext.Current.Request.Url
url时总是/ signalr/connect.
注意:
var hub = $.connection.myHub;
$.connection.hub.start();
Run Code Online (Sandbox Code Playgroud)
在_Layout.cshtml中.
更新:
我试过用
var location = '@HttpContext.Current.Request.Url';
var hub = $.connection.myHub;
$.connection.hub.start().done(function () {
hub.setLocation(location);
});
Run Code Online (Sandbox Code Playgroud)
并且位置正确传递但我不需要在Connect()任务上使用它.是否有可能做到这一点?
更新2:
这种方法不起作用
var hub = $.connection.myHub;
$.connection.hub.start(function(){hub.setLocation(location)});
Run Code Online (Sandbox Code Playgroud)
就像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
}
}
Run Code Online (Sandbox Code Playgroud)
更新3
使用QueryString在Connect()
发生之前传递数据.
var location = '@HttpContext.Current.Request.Url';
var hub = $.connection.myHub;
$.connection.hub.qs = "location= + location;
$.connection.hub.start();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6345 次 |
最近记录: |