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」に「data」を送信します。しかし、私はこの行にエラーがあります

 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のバージョン、つまりサーバー側に関係していると思います。つまり、タスク指向のエラーを受け取っているからです。有益な可能性のあるもう1つの情報は、GetWaitingOrdersCountがどのように呼び出されているかを知ることです。別名、con.server.getWaitingOrdersCountを介してクライアントから直接呼び出されているのか、ハブ内から呼び出されているのか。

この情報がお役に立てば幸いです。

于 2012-11-21T18:01:18.607 に答える