【问题标题】:SignalR not workingSignalR 不工作
【发布时间】:2012-11-02 16:30:34
【问题描述】:

我正在尝试用信号器做一些事情。 我的中心是

 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”

【问题讨论】:

  • 尝试使用小写的集线器名称:例如var care = $.connection.customer;

标签: asp.net-mvc signalr


【解决方案1】:

您的问题是客户端的集线器名称应为小写,因为代理生成以驼峰形式生成集线器名称。所以你的代理应该是这样的:

 var care = $.connection.customer;

这就是为什么您收到 care 对象未定义的错误。这记录在SignalR Wiki - JS Client Hubs 页面上。此外,如果您在浏览器中查看生成的 /signalr/hubs 页面,您将看到中心及其定义的方法。

【讨论】:

  • 参数名称也应该与在集线器中声明的相同?
  • 大多数示例显示使用相同的参数名称,但只要它们是相同的类型,它们应该可以工作。但我不能肯定地说。
  • @PaigeCook 我也遇到了中心类大写字母的问题,感谢您的解释
猜你喜欢
  • 1970-01-01
  • 2015-09-23
  • 2012-09-21
  • 2013-08-23
  • 2021-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多