2014-09-02 54 views
0

我目前有一個消息頁面,顯示發送給用戶的所有新消息。這些消息與NewMessageCount一起存儲在數據庫中。如果用戶有一條新消息,則會在從NewMessagecount中選擇的消息旁邊顯示一條小通知。我使用SignalR來實現這一點,並且我對SignalR非常陌生,所以如果我犯了一個明顯的錯誤,請原諒我。如何運行signalR Hub的兩個函數?

我有Hub這兩個功能工作正常,因爲他們過濾和更新正確的領域。然而我的問題是我似乎無法讓這兩個函數在消息頁面上一個接一個地運行。我希望當消息選項卡notifications.server.removeNotification();用戶點擊運行提前

+0

目前尚不清楚你想達到什麼目的,但作爲一個側面提示 - 將你的'click'處理程序從'removeNotification'回調中移出 - 現在每當'Clients.removeNotificatio n'被調用,這不是我想要的。 – 2014-09-02 15:12:35

+0

@IlyaLuzyanin對不起,如果我沒有說清楚。類似於SO發佈評論時通知系統顯示在頂部,當用戶點擊它時,它會消失。這就是我想要實現的 – Izzy 2014-09-02 15:15:32

+1

在你的hub.start回調中添加'click'處理程序,如下所示:'... $('。Message')。click(function(){notifications.server.removeNotification() ;''和'$('#NewMessages')。text'將在client.recieveNotification回調中更新,因爲它現在是這樣嗎? – 2014-09-02 15:19:13

回答

0

隨着@IlyaLuzyanin評論的幫助下

<script type="text/javascript"> 
    $(function() { 

     var notifications = $.connection.notificationHub; 

     notifications.client.recieveNotification = function (totalNewMessages) { 

      $('#NewMessages').text(totalNewMessages); 
     }; 
     notifications.client.removeNotification = function (totalNewMessages) { 
      $('.Message').click(function() { 
       $('#NewMessages').text(totalNewMessages); 
      }); 
     }; 
     // Start the connection. 
     $.connection.hub.start(function() { 
      notifications.server.sendNotifications(); 
      notifications.server.removeNotification(); //This is what i want to run on the click event?? But don't know how to 
     }).fail(function (e) { 
      alert(e); 
     }); 
});   
</script> 

感謝我管理通過將hub.start

click處理程序來解決問題
$.connection.hub.start(function() { 
      notifications.server.sendNotifications(); 
      $('.removemessage').click(function() { 
       notifications.server.removeNotifications(); 
      }) 
     });