我有一个持久连接,我想从使用查询参数的一些种子信息开始。这是连接中的覆盖。
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(() =>
{
});
有人能告诉我如何将查询字符串参数传递给此连接器,以便我可以在覆盖中读取它们,因为我似乎在这方面遇到了困难。
干杯,希望有人能提供帮助,
戴夫
最佳答案
中心
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
关于javascript - Signalr 与查询参数的持久连接。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15585100/