【问题标题】:send value to specific User in SignalR向 SignalR 中的特定用户发送值
【发布时间】:2017-05-03 23:18:21
【问题描述】:

在用户使用 SignalR 按下发送按钮后,我有 4 个文本框正在同时填充。在一部分中,我正在向所有用户发送文本框值,这是可行的。但是当我尝试将值发送给特定用户时,按下按钮后,所有文本框都变空了。

这是正在工作的代码,向所有用户发送值:

这是集线器:

 public void Send(string loanType, string loanAmount, string interestRates, string payment)
    {
        User sender = GetUser(Context.User.Identity.Name);

        var username = sender.Name;
        IEnumerable<string> connectionIds = sender.ConnectionIds;

        //All connected clients.
        Clients.All.broadcastMessage(loanType, loanAmount, interestRates, payment);

    }

这是js:

  $('#sendmessage').click(function (e) {
            sendPayment();
            e.preventDefault();
        });


        function sendPayment() {
        var msgValue = $msgTxt.val();
        var loanType = $('#txtLoanType').val();
        var loanAmount = $('#txtLoanAmount').val();
        var interestRates = $('#txtInterestRates').val();
        var payment = $('#txtPayment').val();

        if (loanType !== null && loanType.length > 0 && loanAmount !== null && loanAmount.length > 0 && interestRates !== null && interestRates.length > 0
            && payment !== null && payment.length > 0) {

            if (viewModel.isInPrivateChat()) {
                $.connection.hub.start();
                chatHub.server.send(msgValue, viewModel.privateChatUser(), $('#txtLoanType option:selected').val(), $('#txtLoanAmount').val(), $('#txtInterestRates').val(), $('#txtPayment').val());


            }
            else {

                 // Call the Send method on the hub.
                chatHub.server.send($('#txtLoanType option:selected').val(), $('#txtLoanAmount').val(), $('#txtInterestRates').val(), $('#txtPayment').val());


            }
        }



     chatHub.client.broadcastMessage = function (loanType, loanAmount, interestRates, payment) {
            $('#txtLoanType').val(loanType);
            $('#txtLoanAmount').val(loanAmount);
            $('#txtInterestRates').val(interestRates);
            $('#txtPayment').val(payment);
    };

但是当我尝试向特定用户发送值时它不起作用:因为我正在调试 C# 代码正在工作我的问题在于 JS:

这是将文本框的值发送给特定用户的 C# 方法:

 public void Send(string message, string to, string loanType, string loanAmount, string interestRates, string payment)
    {
        User receiver;
        if (Users.TryGetValue(to, out receiver))
        {

            User sender = GetUser(Context.User.Identity.Name);

            IEnumerable<string> allReceivers;
            lock (receiver.ConnectionIds)
            {
                lock (sender.ConnectionIds)
                {

                    allReceivers = receiver.ConnectionIds.Concat(sender.ConnectionIds);
                }
            }

            foreach (var cid in allReceivers)
            {
                Clients.Client(cid).broadcastMessage(new { message = message, isPrivate = true, loanType = loanType,
                    loanAmount = loanAmount,
                    interestRates = interestRates,
                    payment = payment
                });
            }
        }
    }

它将调用JS文件中的Private部分:

               if (viewModel.isInPrivateChat()) {
                $.connection.hub.start();
                chatHub.server.send(msgValue, viewModel.privateChatUser(), $('#txtLoanType option:selected').val(), $('#txtLoanAmount').val(), $('#txtInterestRates').val(), $('#txtPayment').val());

【问题讨论】:

    标签: javascript c# signalr


    【解决方案1】:

    函数签名不匹配。有不同数量的参数,它们必须完全匹配,否则 javascript 函数将永远不会被调用,看起来你正在尝试使用 send 函数的参数,当你调用 broadcastMessage 函数时。

    在您正在寻找的用户的 JavaScript 中:

    function (loanType, loanAmount, interestRates, payment)
    

    但你正在发送:

    broadcastMessage(new { message = message, isPrivate = true, loanType = loanType,
                    loanAmount = loanAmount,
                    interestRates = interestRates,
                    payment = payment
                })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      • 2016-09-19
      • 1970-01-01
      • 2015-05-14
      相关资源
      最近更新 更多