SignalR。 HubConnection不从服务器调用客户端方法

时间:2012-07-12 09:33:05

标签: c# signalr

那里的任何人都可以帮助我理解

以下代码中没有使用SignalR从服务器方法调用客户端方法的错误。

单击广播按钮时,我可以调用客户端方法。 当我从控制台应用程序运行selfInvoke代码时,也会触发该事件。

服务器类驻留在不同程序集中的CustomEvent处理程序中。

聊天中心代码如下:

namespace MySample.Handler
{
    [HubName("chat")] 
    public class Chat: Hub
    {
        public void Send(string message)
        {
            Clients.addMessage(message);
            // I tried this code as well:
            // IHubContext context = GlobalHost.ConnectionManager.GetHubContext<Chat>();
           // context.Clients.addMessage("Hello world");
        }
    }
}

调用聊天中心的源代码如下:

namespace MySample.Handler
{
    public static class SelfInvoke
    {
        public static void OnEvent()
        {
            var hubConnection = new HubConnection("http://localhost:48994");
            var chat = hubConnection.CreateProxy("chat");
            hubConnection.Start().Wait();
            string message1 = "Hai from OnEvent Handler!!!";
            chat.Invoke("Send", message1).Wait();
        }
    }
}

的Index.aspx

    <script src="Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
    <script src="Scripts/jquery.signalR-0.5.2.min.js" type="text/javascript"></script>
    <script src="/signalr/hubs" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
          var chat = $.connection.chat;

          chat.addMessage = function (message) {
              $('#messages').append('<li>' + message + '</li>');
          };

          $("#broadcast").click(function () {
              chat.send($('#msg').val());
          });
          $.connection.hub.start();
        });
    </script>
  <input type="text" id="msg" />
  <input type="button" id="broadcast" value="broadcast" />
  <ul id="messages">
  </ul>

index.aspx.cs [代码背后代码..]

   protected void Page_Load(object sender, EventArgs e)
   {
        SelfInvoke.OnEvent();
   }

非常感谢任何帮助。

此致 文斯

1 个答案:

答案 0 :(得分:0)

更改您的JavaScript客户端函数定义,使它们为:

chat.client.XXX = function ...

而不是:

chat.XXX = function ...

此外,将您对服务器的呼叫更改为:

chat.server.send($('#msg').val());

而不是:

chat.send($('#msg').val());