2013-03-23 41 views
10

Tôi có kết nối liên tục mà tôi muốn bắt đầu với một số thông tin hạt giống bằng cách sử dụng thông số truy vấn. Đây là ghi đè trong kết nối.Kết nối liên tục Signalr với thông số truy vấn.

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

     return base.OnConnected(request, connectionId); 
    } 

Bây giờ tôi đã thiết lập tuyến đường của mình trong tệp global.asax giống như thế này.

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

Và mã khách hàng trông như thế này

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

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

Ai đó có thể cho tôi biết làm thế nào tôi có thể vượt qua params chuỗi truy vấn để connecton này vì vậy tôi có thể đọc chúng trong override như tôi dường như được đánh một viên gạch tường trên này.

Cheers hy vọng ai đó có thể giúp đỡ,

Dave

Trả lời

32

Hubs

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

và để có được nó trên máy chủ

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

Để truy cập vào chuỗi truy vấn của bạn trong javascript bạn có thể sử dụng một cái gì đó như

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]; 
     } 
    } 
} 

Gọi nó:

var name = getQueryStringValueByKey("name"); 

dai dẳng LIÊN

//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); 
    } 

Đây là mã nguồn, nơi bạn có thể tìm hiểu thêm: https://github.com/SignalR/SignalR/blob/master/src/Microsoft.AspNet.SignalR.Client.JS/jquery.signalR.core.js#L106

+0

tôi không sử dụng hub Tôi đang sử dụng loại kết nối liên tục. – user231300

+0

Xin lỗi. Tôi đã cập nhật câu trả lời. Vui lòng đánh dấu nếu đây là những gì bạn muốn. –

+0

hey hoạt động một điều trị. Đã cố gắng để munge nó vào descriptter tuyến đường hoặc con đường thực sự tôi đã đánh. Đã không nhận ra có quá tải này. Tuyệt vời! – user231300

Các vấn đề liên quan