1

有谁能帮我理解

以下代码有什么问题,即未使用 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();
        }
    }
}

索引.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();
   }

非常感谢任何帮助。

问候文斯

4

1 回答 1

0

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

chat.client.XXX = function ...

代替:

chat.XXX = function ...

此外,将您对服务器的调用更改为:

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

代替:

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

于 2013-01-08T21:34:40.817 回答