2013-03-23 2 views
10

У меня постоянное соединение, которое я хотел бы начать с некоторой информации о семе, используя параметры запроса. Вот переопределение в соединении.Постоянное соединение 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(() => 
      { 
      }); 

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

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

Dave

ответ

32

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"); 

PERSISTENT ПОДКЛЮЧЕНИЕ

//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

+0

Я не с помощью концентраторов Я использую постоянный тип соединения. – user231300

+0

Извините. Я обновил ответ. Пожалуйста, отметьте, если это то, что вы хотели. –

+0

эй, который работает. Попытался превратить его в описатель маршрута или на самом деле, на котором я бил. Не понял, что это перегрузка. Потрясающие! – user231300

Смежные вопросы