2015-06-15 68 views
0

我目前正在趕上與SignalR,並試圖建立一個非常基本的信號通知系統使用SignalR我非常基本的瞭解,但我無法得到消息在提交後回來。回覆客戶端不會觸發與SignalR

我已經閱讀過關於這個主題的許多博客,最基本的是有一個VOID方法接受一個字符串值,然後通過將它附加到客戶端上下文來傳回,但是,這不適用於,因爲onReceiveNotification()總是在JS調試器中未定義?

我缺少的東西

notificationhub.cs

[HubName("notificationHub")] 
public class NotificationHub : Hub 
{ 

    public override System.Threading.Tasks.Task OnConnected() 
    { 
     return base.OnConnected(); 
    } 

    public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled) 
    { 
     return base.OnDisconnected(stopCalled); 
    } 

    public override System.Threading.Tasks.Task OnReconnected() 
    { 
     return base.OnReconnected(); 
    } 

    [HubMethodName("sendNotifications")] 
    public void SendNotifications(string message) 
    { 
     Clients.All.onRecieveNotification(string.Format("{0} {1}", message, DateTime.Now.ToString())); 
    } 
} 

message.html頁

<div> 
    <input type="text" id="messageinput" /> 
    <button id="notifybutton">Send Message</button> 
</div> 

<script src="Scripts/jquery-2.1.4.min.js"></script> 
<script src="Scripts/jquery.signalR-2.2.0.min.js"></script> 
<script src="signalr/hubs"></script> 
<script type="text/javascript"> 
    jQuery(document).ready(function ($) 
    { 
     var $hub = $.connection.notificationHub; 
     $.connection.hub.start(); 

     $(document).on("click", "#notifybutton", {}, function (e) 
     { 
      e.preventDefault(); 
      var $message = $("#messageinput").val(); 
      $hub.server.sendNotifications($message); 
     }); 
    }); 
</script> 

display.html

<div> 
    <ul id="messages"></ul> 
</div> 

<script src="Scripts/jquery-2.1.4.min.js"></script> 
<script src="Scripts/jquery.signalR-2.2.0.min.js"></script> 
<script src="signalr/hubs"></script> 
<script type="text/javascript"> 
    jQuery(document).ready(function ($) 
    { 
     var $hub = $.connection.notificationHub; 

     $hub.onRecieveNotification = function (message) 
     { 
      $("#message").append($("<li></li>", { text: message })); 
     } 

     $.connection.hub.start(); 
    }); 
</script> 
+1

是'$ hub.onRecieveNotification'不確定的,即使它去'$ .connection.hub.start()之後;'? – Artyom

+0

請參閱[「應該在其標題中包含」標籤「?」](http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles),其中共識是「不,他們不應該」! –

+0

@Artem我用.client試了一下,發現顯示的開始從未被觸發,不知道爲什麼,在一個新的HTML文件中重新編寫了相同的代碼,並且它工作正常。謝謝 – JadedEric

回答

1

它看起來像你缺少在client

$hub.client.onRecieveNotification = function (message) 
    { 
     $("#message").append($("<li></li>", { text: message })); 
    }