这是我第一次尝试使用signaler,我不知道我的代码是否正确,此代码仅用于测试,signaler应该在从控制器操作调用时发送给所有客户端:
以下是我所做的:
1.使用nuget安装了signaler(我在捆绑/缩小方面有点问题),所以我要分别导入signaler js
2.在新文件夹singalr中创建中心:

    [HubName("messageHub")]
    public class MessagesHub : Hub
    {
        public void AddMessage(string htmlstring)
        {
            Clients.addMessage(htmlstring);
        }
    }

3.创建了客户端脚本,我只需要服务器->客户端,不需要两种方式:
<script src="@Url.Content("~/SignalR/jquery.signalR-0.5.2.min.js")" type="text/javascript"></script>
<script src="/signalr/hubs" type="text/javascript"></script>

<div class="content-wrapper">
        <h1 id="lq" class="subtitle">Public Messages</h1>
</div>

<script type="text/javascript">
    $(function ()
    {
        var message = $.connection.messageHub;

        message.addMessage= function (htmlstring)
        {
            $(htmlstring).insertAfter('#lq');
        };

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

4.以下是当有人访问时,wich应向所有客户发送消息的操作。
   public ActionResult Index(int id, string title)
   {
     MessagesModel model = new MessagesModel(id);
     var hubContext = GlobalHost.ConnectionManager.GetHubContext<SignalR.MessagesHub>();
     hubContext.Clients.addMessage("Sample Message");
     return View(model);
   }

所以我打开firefox,我可以在firebug中看到协商成功,打开chrome并转到这个页面索引,只想看到“示例消息”被插入到firefox的页面中,但是什么也没有发生,我遗漏了什么?
更新:
在firebug中导航离开页面时,未找到“/signaler/hubs”

最佳答案

这听起来可能很傻,但问题是客户机和服务器方法命名相同,尽管大小写不同,所以我改变了:

[HubName("messageHub")]
    public class MessagesHub : Hub
    {
        public void AddMessage(string htmlstring)
        {
            Clients.addMessage(htmlstring);
        }
    }

致:
  [HubName("messageHub")]
        public class MessagesHub : Hub
        {
            public void SendMessage(string htmlstring)
            {
                Clients.addMessage(htmlstring);
            }
        }

10-07 13:05