使用SignalR将消息从服​​务器发送到客户端

时间:2014-04-06 13:38:27

标签: c# signalr asp.net-mvc-5

我一直在阅读文档中的这篇文章:

http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-getting-started-with-signalr-20-and-mvc-5

它说,我可以像这样从客户端向服务器发送消息:

$.connection.hub.start().done(function () {
    $('#sendmessage').click(function () {
        // Call the Send method on the hub. 
        chat.server.send($('#displayname').val(), $('#message').val());
        // Clear text box and reset focus for next comment. 
        $('#message').val('').focus();
    });
});

但是,如何从服务器向客户端发送消息?

我第一次按照本教程http://www.codemag.com/Article/1210071解释说我只需要这样做:

SendMessage("Index action invoked.");

SendMessage()定义为:

private void SendMessage(string message)
{
    GlobalHost.ConnectionManager.GetHubContext<NotificationHub>().Clients.All.sendMessage(message);
}

但是,这不起作用。在我的客户端,我的错误是:

  

对象#没有方法&#39;激活&#39;

我使用的客户端代码是:

$.connection.hub.start(function () {
    notificationHub.activate(function (response) {
        /*
        $("#target")
         .find('ul')
         .append($("<li></li>").html(response));
         */
        console.log(response);
    });
});

所以,问题是,如何从服务器向客户端发送简单消息?

有人能告诉我一个如何做到这一点的完整示例吗?我已经看过文档中的股票代码示例,但它很难理解/应用。

1 个答案:

答案 0 :(得分:3)

根据我的理解,你在客户端调用一个名为sendMessage的函数

private void SendMessage(string message)
{
    GlobalHost.ConnectionManager.GetHubContext<NotificationHub>().Clients.All.sendMessage(message);
}

但是,我没有在客户端看到此功能的定义。相反,您已经定义了一个名为activate()的函数。另外,从我的工作代码中,我已经定义了这样的客户端功能。

    var hub = $.connection.notificationHub;
    hub.client.sendMessage= function (data) {
//some logic here
}