2012-11-02 185 views
2

我正在嘗試用signalr做一些事情。 我中心是SignalR不能正常工作

public class Customer : SignalR.Hubs.Hub 
{ 
    public void Send(string uid, string from, string msg) 
    { 
     string make = from + uid; 
     Clients.Addmsg(msg, make); 
    } 
} 

和客戶端代碼

<script src="Scripts/jquery-1.6.4.min.js" type="text/javascript"></script> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script> 
<script src="Scripts/jquery.signalR-0.5.3.min.js" type="text/javascript"></script> 
<script src="/signalr/hubs" type="text/javascript"></script> 
<script type="text/javascript" language="javascript"> 
    $(function() { 
     // Proxy created on the fly 
     var care = $.connection.Customer; 

     $("#broadcast").click(function() { 
      // Call the chat method on the server 
      care.send($('#msg').val(), "HariOm", "jai jai ram") 
     .done(function() { 
      console.log('Success!'); 
     }) 
     .fail(function (e) { 
      console.warn(e); 
     }); 
     }); 

    // Declare a function on the chat hub so the server can invoke it 
    care.Addmsg = function (message, make) { 
     alert(message + msg); 
    }; 



     // Start the connection 
     $.connection.hub.start(); 


    }); 


</script> 

我加載頁面

遺漏的類型錯誤後收到此錯誤:無法設置屬性「ADDMSG」的未定義

+1

嘗試使用小寫的集線器名稱:例如'var care = $ .connection.customer;' – nemesv

回答

5

您的問題是客戶端上的集線器名稱應該是小寫,因爲代理生成的駱駝大小寫名稱是hub。所以您的代理應該是這樣的:

var care = $.connection.customer; 

這就是爲什麼你得到你的care對象是不確定的錯誤。這記錄在SignalR Wiki - JS Client Hubs頁面上。另外,如果您查看瀏覽器中生成的/signalr/hubs頁面,您將看到定義的集線器及其方法。

+0

參數名稱也應該與它們在集線器中聲明的相同? – Himanshu

+0

大多數示例顯示使用相同的參數名稱,但只要它們是相同的類型,它們應該可以工作。但我無法肯定地說。 –

+0

好的,謝謝佩奇會檢查它 – Himanshu