2012-11-02 83 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