2013-01-07 63 views
2

Web服務器如何使用SignalR同步調用客戶端上的方法?這裏的關鍵部分是服務器在繼續之前應該等待客戶端將數據發回服務器?與SignalR同步調用客戶端方法

基本上我正在尋找像對待WCF服務請求一樣處理客戶端方法。調用客戶端並等待數據返回。

回答

4

SignalR沒有提供同步調用客戶端方法的方法。

要實現與同步調用相同的功能,可以將某種調用ID作爲參數傳遞給客戶端方法。客戶端可以在客戶端方法完成時調用服務器端方法,如ClientMethodCompleted及其調用ID。基本上你會實現你自己的ACK。

如果你走這條路線,你將不得不追蹤服務器上的客戶端調用以及它們各自的ID。然後,您可以在服務器上的ClientMethodCompleted方法中執行同步調用後執行的任何邏輯。

如果您只在一個客戶端上調用方法,這應該相當簡單。如果您在多個客戶端上調用該方法,則必須跟蹤哪些客戶端正在調用您的方法,以便在運行後續代碼之前確保所有客戶端都已確認調用。

如果您一開始擔心DOS攻擊,我還會確保您定期清理存儲未確認客戶端調用的數據結構,因爲這將是一個明顯的攻擊媒介,可能會導致惡意客戶端的內存消耗。

+0

如果我不能達到我想要的水平,這將是我的回退計劃。感謝您的澄清。 – Matt