从控制器推送消息时,信号器无法更新视图

时间:2017-01-24 11:59:58

标签: c# signalr

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

在控制器中:

function GetPageData() {
$.ajax({
    type: "Post",
    url: '/Track/GetPageData',
    dataType: "json",
    data: param = "",
    success: successFunc,
    error: errorFunc
});
function successFunc(data, status) {
    alert('data; '+data+', '+'status: '+status);
    if (data == 'contact') {
        $.ajax({
            type: "Post",
            url: '/Track/Contact',
            dataType: 'json',
            success: successF,
            error: errorF
        });
        function successF() {
            alert('services')
        }
        function errorF() {
            alert('servicesFail')
        }
    }

在javascript中:

public ActionResult Contact()
    {
        return View();
    }

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

1 个答案:

答案 0 :(得分:0)

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

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;
        }
    }
}

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