SignalR-将数据发送到特定客户端

时间:2012-11-21 14:58:50

标签: asp.net-mvc signalr

我想将数据发送到特定客户端。要做到这一点,我尝试以下;

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

      var data = 10

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

      //return data;
    }

在上面的代码中,我想将'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);

1 个答案:

答案 0 :(得分: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调用的,或者是从集线器中调用它。

希望此信息有所帮助!