【问题标题】:Signalr unable to update view when message is pushed from controller从控制器推送消息时,Signalr 无法更新视图
【发布时间】:2017-01-24 22:46:47
【问题描述】:

我是 SignalR 的新手,正在学习基础知识。我正在尝试从我的控制器操作向客户端发送推送消息。

在控制器中:

public ActionResult Index()
    {
     GlobalHost.ConnectionManager.GetHubContext<MessageHub>().Clients.All.send("Some msg");
        return View();
    }

在javascript中:

$(function () {
    var messageHub = $.connection.messageHub;

    $.connection.hub.start();
   messageHub.client.send = function (content) {
        alert(content);
        $("#div1").text('abc');
        alert('done');
    }

由于服务器在加载视图之前调用了客户端方法,我只能看到来自 JS 的警报消息,无法更新视图。不知道我在这里缺少什么。

【问题讨论】:

  • 对于简单的测试开始计时器,如果计时器结束,则发送您的消息。也许你应该在开始编程之前画出你喜欢做的事情

标签: c# signalr


【解决方案1】:

对于那个简单的测试,我会创建一个简单的计时器,比如

public class Clock
{
    private static Clock _instance;
    private Timer timer;
    private Clock()
    {
        timer = new Timer(200);
        timer.Elapsed += Timer_Elapsed;
        timer.Start();
    }

    private void Timer_Elapsed(object sender, ElapsedEventArgs e)
    {
        GlobalHost.ConnectionManager.GetHubContext<ClockHub>().Clients.All.sendTime(DateTime.UtcNow.ToString());
    }

    public static Clock Instance
    {
        get
        {
            if (_instance == null)
            {
                _instance = new Clock();
            }
            return _instance;
        }
    }
}

在您的应用程序启动时创建此计时器的实例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    相关资源
    最近更新 更多