Signalr 如何使用信号器从集线器调用特定函数

Signalr 如何使用信号器从集线器调用特定函数,signalr,Signalr,我试图根据服务器接收到的参数调用不同的javascript函数(从服务器到客户端!) 如何指定要使用哪个参数从服务器在客户端调用哪个函数 public class TestData { public string function{ get; set; } public string element{ get; set; } } public class PerfHub : Hub { public void Send(string id, string

我试图根据服务器接收到的参数调用不同的javascript函数(从服务器到客户端!)

如何指定要使用哪个参数从服务器在客户端调用哪个函数

public class TestData
{
    public string function{ get; set; }
    public string element{ get; set; }
}

public class PerfHub : Hub
{       
    public void Send(string id, string message)
    {
        if (!String.IsNullOrEmpty(id))
        {
            List<TestData> testList = new List<TestData>();
            if (id == "1")
            {
                testList.Add(new TestData { function= "show", element= "grid" });
                Clients.All.sendInstructions(id, testList);
            }
            else if (id == "2")
            {
                testList.Add(new TestData { function= "hide", element= "grid" });
                Clients.All.sendInstructions(id, testList);
            }
目前,我使用jQuery.hover方法将id发送到服务器,因为我似乎无法使click事件正常工作

    $.connection.hub.start().done(function () {
        $('html *').hover(function () {
            // Call the Send method on the hub.
            instructions.server.send($(this).attr('id'), $(this).val());
            //$('#message').val($(this).attr('id')).focus();
        }, function () {
            $('#message').val('').focus();
        });
    });
});

谢谢

我用动态键修复了它

var instructions = $.connection.perfHub;

    instructions.client.sendInstructions = function (id, message) {

        if (id === "serverFunction") {

            var ctx = {
                showRoads: function (param) { $(param).show(); },
                hideRoads: function (param) { $(param).hide(); },
                shoresOn: function (param) { $(param).show(); },
                shoresOff: function (param) { $(param).hide(); },
                showTiles: function (param) { $(param).show(); },
                sideTiles: function (param) { $(param).hide(); }
            }

            for (var index = 0; index < message.length; ++index) {
                ctx[message[index].function](message[index].element);
            }

        }
    }

    // Call the Send method on the hub.
    $.connection.hub.start().done(function () {
        $('html *').click(function () {
            instructions.server.send($(this).attr('id'), $(this).val());
        });
    });
var指令=$.connection.perfHub;
instructions.client.sendInstructions=函数(id,消息){
如果(id==“服务器函数”){
变量ctx={
showRoads:function(param){$(param.show();},
hideRoads:function(param){$(param.hide();},
shoresOn:function(param){$(param.show();},
shoresOff:function(param){$(param.hide();},
showTiles:function(param){$(param.show();},
侧块:函数(param){$(param.hide();}
}
对于(变量索引=0;索引

希望这对人们有用,它确实对我有用:)

你有什么错误?到底发生了什么?Clients.All.sendInstructions(id,testList);是在客户端上调用名为sendInstructions的函数的正确方法
var instructions = $.connection.perfHub;

    instructions.client.sendInstructions = function (id, message) {

        if (id === "serverFunction") {

            var ctx = {
                showRoads: function (param) { $(param).show(); },
                hideRoads: function (param) { $(param).hide(); },
                shoresOn: function (param) { $(param).show(); },
                shoresOff: function (param) { $(param).hide(); },
                showTiles: function (param) { $(param).show(); },
                sideTiles: function (param) { $(param).hide(); }
            }

            for (var index = 0; index < message.length; ++index) {
                ctx[message[index].function](message[index].element);
            }

        }
    }

    // Call the Send method on the hub.
    $.connection.hub.start().done(function () {
        $('html *').click(function () {
            instructions.server.send($(this).attr('id'), $(this).val());
        });
    });