0

我想将数据发送到特定的客户端。为此,我正在尝试以下方法;

public Task GetWaitingOrdersCount(string id, string clientId)
    {
        DateTime today = Util.getCurrentDateTime();

      var data = 10

      return Clients.Client(Context.ConnectionId).loadOrders(data);

      //return data;
    }

在上面的代码中,我想将“数据”发送到传递给此方法的“clientId”。但我在这一行有一个错误

 return Clients.Client(Context.ConnectionId).loadOrders(data);

错误是

'System.Threading.Tasks.Task<object>' does not contain a definition for 'loadOrders'

客户端代码

con.loadOrders = function (data) {
        loadOrders(data);

    };

function loadOrders(data) {

    $('#totalOrders').html(data);
}

关于错误的任何帮助???

编辑: 这是我的完整客户端代码..

<script type="text/javascript">
var con;
$(document).ready(function () {
    con = $.connection.messagingHub;


    $.connection.hub.start(function () {
        var myClientId = $.connection.hub.id;
        con.getWaitingOrdersCount('<%:ViewBag.rid%>',myClientId).done(function (data) {
            console.log(data);
        });
    });

    con.client.loadOrders = function (data) {
        loadOrders(data);

    };

});
function loadOrders(data) {

    $('#totalOrders').html(data);

4

1 回答 1

0

我刚刚试用了您的代码(稍作修改),对我来说效果很好。您使用的是什么版本的 SignalR?从你的服务器代码来看,我会说 1.0Alpha1+,但你的客户端代码看起来更像 0.5.3,除非你的 con 对象被分配给 $.connection.yourhub.client;

如果您更新到 SignalR 1.0Alpha2 并将您的客户端代码更改为:

var con = $.connection.myCon;// This is arbitrary and would change based on your naming

con.client.loadOrders = function (data) {
    loadOrders(data);

};

function loadOrders(data) {
    $('#totalOrders').html(data);
}

话虽如此,我相信您的问题与您正在使用的 SignalR 版本有关,即服务器端:因为您收到面向任务的错误。另一条可能有用的信息是了解如何调用 GetWaitingOrdersCount。Aka 是直接通过客户端调用:con.server.getWaitingOrdersCount 还是从集线器内部调用。

希望这些信息有帮助!

于 2012-11-21T18:01:18.607 回答