ASP.NET MVC アプリケーション用に、SignalR を学習するための楽しいプロジェクトとして、SignalR を使用してユーザー トラッキング ソリューションを開発しています。
現在、ログに記録されたユーザーと、特定のページにいる時間を追跡できます。それらが別のページに移動すると、それも追跡し、SignalR が更新しているタイマーがリセットされます...他の多くの機能が実装されているか、部分的に実装されています。
私が直面している問題は、SignalR ハブ内の完全な URL コントローラー/アクション/パラメーターを取得する方法ですか?
私が使用する場合HttpContext.Current.Request.Url
、URLは常に/signalr/connectです。
ノート:
var hub = $.connection.myHub;
$.connection.hub.start();
_Layout.cshtml にあります。
アップデート:
私は使用しようとしました
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)});
が以前に呼び出された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
}
}
アップデート 3
QueryString を使用して、Connect()
発生する前にデータを渡します。
var location = '@HttpContext.Current.Request.Url';
var hub = $.connection.myHub;
$.connection.hub.qs = "location= + location;
$.connection.hub.start();