2016-05-05 85 views
0

我從基本上是Javascript確認對話框的服務器調用客戶端方法。如果客戶端點擊我要刪除從本地存儲的令牌對話框上的Cancel按鈕(本質上記錄出來)...SignalR - 將客戶端的響應傳遞迴服務器

sessionStorage.removeItem('access-token'); 

如果客戶點擊OK按鈕,我想要做一個同樣的不同的客戶端(我有這個客戶端存儲在服務器端的connectionId)。所以我需要一種方式讓服務器知道客戶選擇了哪個選項(OKCancel)。

我該如何處理客戶端的選擇並將其傳回服務器,以便服務器可以在正確的客戶端上調用「註銷」Javascript?

+0

是我的回答是你要找的,還是你尋找一個不同的實現? –

回答

1

我想你有幾個選擇。

一旦用戶點擊了按鈕,您可以發回消息回Hub

樞紐

[HubName("message")] 
public class MessageHub : Hub 
{ 
    public void sendmessage(bool logout) 
    { 
     Clients.Caller(????).logoutuser(logout); //However you identify who to logout?? 
    } 
} 

客戶

var hub = $.connection.message; 

hub.client.logoutuser = function(message) { 
    if (message.logout = true) { 
     sessionStorage.removeItem('access-token'); 
    } 
} 

hub.server.sendmessage(true); //result of the user's click OK -> True, Cancel -> False 

$.connection.hub.start().done(function() { }); 

或者你也可以打的將獲取一些連接的API?您想要註銷的用戶。

API

[RoutePrefix("api/messaging")] 
public class MessagingController : ApiController 
{ 
    [Route("")] 
    public void Post(Message message) 
    { 
     var notificationHub = GlobalHost.ConnectionManager.GetHubContext<MessageHub>(); 
     if (notificationHub != null) 
     { 
      try 
      { 
       notificationHub.Clients.User(message.UserName).logoutuser(message); 
      } 
      catch (Exception ex) 
      { 
      } 
     } 
    } 
} 

客戶

function notifyController(responseObj) { 

$.ajax({ 
     url: '/api/Messaging/', 
     type: 'POST', 
     data: responseObj, // some object containing the users response information? 
     success: function (data) { return; }, 
     error: function (ex) { return; } 
    }); 
} 
相關問題