11

クエリ パラメータを使用していくつかのシード情報から開始したい永続的な接続があります。これが接続のオーバーライドです。

    protected override Task OnConnected(IRequest request, string connectionId)
    {
        //GET QUERY PARAMS HERE

        return base.OnConnected(request, connectionId);
    }

これで、global.asax ファイルにルートが設定されました。これは次のようになります。

RouteTable.Routes.MapConnection("myconnection", "/myconnection");

そして、クライアントコードは次のようになります

var connection = $.connection('/myconnection');

connection.start()
          .done(() =>
          {
          });

クエリ文字列パラメーターをこの接続に渡す方法を誰かに教えてもらえますか?これでレンガの壁にぶつかっているように見えるので、オーバーライドでそれらを読み取ることができます。

乾杯、誰かが助けてくれることを願っています。

デイブ

4

1 に答える 1

36

ハブ

   var connection = $.connection('/myconnection');
    $.connection.hub.qs = "name=John"; //pass your query string

サーバー上で取得する

var myQS = Context.QueryString["name"];

JavaScriptでクエリ文字列にアクセスするには、次のようなものを使用できます

function getQueryStringValueByKey(key) {
    var url = window.location.href;
    var values = url.split(/[\?&]+/);
    for (i = 0; i < values.length; i++) {
            var value = values[i].split("=");
            if (value[0] == key) {
                return value[1];
        }
    }
} 

あれを呼べ:

var name = getQueryStringValueByKey("name");

永続的な接続

//pass your query string
var connection = $.connection('/myconnection', "name=John", true);

protected override Task OnConnected(IRequest request, string connectionId)
    {
        //get the name here
        var name = request.QueryString["name"];

        return base.OnConnected(request, connectionId);
    }

詳細を確認できるソース コードは次のとおりです: https://github.com/SignalR/SignalR/blob/master/src/Microsoft.AspNet.SignalR.Client.JS/jquery.signalR.core.js#L106

于 2013-03-23T09:43:13.787 に答える