Постоянное соединение Signalr с параметрами запроса.

У меня постоянное соединение, которое я хотел бы начать с некоторой информации о семе, используя параметры запроса. Вот переопределение в соединении.

    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(() =>
          {
          });

Может ли кто-нибудь сказать мне, как я могу передать параметры строки запроса в этот соединитель, чтобы я мог прочитать их в переопределении, поскольку я, кажется, нажимаю на кирпичную стену.

Приветствия, которые кто-то может вам помочь,

Dave

Ответ 1

HUBS

   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