2012-11-21 85 views
0

我想發送數據到一個特定的客戶端。要做到這一點,我正在嘗試以下;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'。 但我M在這一行

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); 

+0

loadOrders(data)的返回類型是什麼? –

+0

我不會返回任何內容......只需在標記內打印「數據」即可。 – kandroid

+0

您能詳細說明GetWaitingOrdersCount返回的任務是如何使用的嗎? –

回答

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。又名是通過以下方式直接從客戶端調用:con.server.getWaitingOrdersCount或從集線器內部調用它。

希望此信息有幫助!

+0

你好泰勒..我signalR版本是0.5.1.10822。這是我正在使用的正確版本?我在我的問題中添加了完整的客戶端代碼,我也根據您的代碼進行了修改。還有問題:( – kandroid

+0

以及如何更新到alpha2? – kandroid

+0

哦,如果你使用的是0.5.1,那麼你的Clients.Client部分是錯誤的。0.5.1中正確的代碼是Clients [Context.ConnectionId] .loadOrders(data);.如果你想更新到1.0 Alpha2,你可以在Nuget中搜索Microsoft.AspNet.SignalR,並將你的過濾器設置爲「Include Pre-release」,然後從那裏更新,請記住,如果使用1.0 Alpha 2有幾個突破的變化(但我強烈建議使用1.0 Alpha2)。 –

相關問題