SignalR服务器到客户端方法不起作用

问题描述:

基于各种资源signalr代码应该工作,但我不能让它发送通知从服务器到客户端。这里是HTML/JavaScript的一部分:SignalR服务器到客户端方法不起作用

<script src="/Scripts/jquery-1.6.4.min.js"></script> 
<script src="/Scripts/jquery.signalR-2.2.1.min.js"></script> 
<script src="/signalr/js"></script> 

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

     $.connection.hub.logging = true; 

     cHub.client.sendMessage = function (content) { 
      $("#container-hub").append($("<p />").html(content)); 
     }; 

     $.connection.hub.start().done(function() { 
      $('[id$=bGo]').click(
        function() { 
         cHub.server.send('Sync process started'); 
        }); 
     });   
    }); 
</script> 
<div id="container-hub" style="background: red; height: 100px; width: 100%;"></div> 

Hub.cs类:

using Microsoft.AspNet.SignalR; 

namespace CMS.Objects 
{ 
    public class CHub : Hub 
    { 
     public void Send(string message) 
     { 
      // Call the broadcastMessage method to update clients. 
      Clients.All.sendMessage(message); 
     } 
    } 
} 

Startup.cs类:

using Microsoft.Owin; 
using Owin; 

[assembly: OwinStartup(typeof(CMS.CStartup))] 

namespace CMS 
{ 
    public class CStartup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      app.MapSignalR();    
     } 
    } 
} 

这里是怎么了调用该方法sendMessage方法:

private void ShowMessage(string message) 
{  
    var clients = GlobalHost.ConnectionManager.GetHubContext<CHub>().Clients; 
    clients.All.sendMessage(message); 
} 

当按钮bGo被点击时,消息被追加到container-hub div,但是当我调用sendMessage方法时没有任何消息。

EDIT

一些附加结果;当我打电话sendMessageOnConnected方法中它的工作原理:

public override Task OnConnected() 
{ 
    Clients.All.sendMessage("Connection Initialised"); 
    return base.OnConnected(); 
} 
+0

您确定“”是对的吗?通常它是“信号器/集线器”。 – ravi

+0

是的,我确定。正如我所提到的,客户端到服务器通信工作正常。 – Morpheus

花了一些像样的时间来调查,我终于找到了解决问题后。不是100%确定,但我认为问题在于使用页面上的UpdatePanel。将signalR javascript代码包装到Sys.Application.add_load而不是使用jQuery的$(function() {并开始工作。

我提到我不是100%确定的原因是与ScriptManager已被多次删除,在发布问题前没有任何结果。