【问题标题】:How to broadcast real-time data in SignalR?如何在 SignalR 中广播实时数据?
【发布时间】:2023-12-27 21:41:02
【问题描述】:

我在Global.asax中有一个定时器,它调用一个方法,每5秒通过SignalR向所有客户端发送当前时间:

    protected void Application_Start(object sender, EventArgs e)
    {
        RouteTable.Routes.MapHubs();
        var timer = new System.Timers.Timer();
        timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
        timer.Interval = 5000;
        timer.Enabled = true;
    }

    void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        var context = GlobalHost.ConnectionManager.GetHubContext<EventHub>();
        context.Clients.All.Send(DateTime.Now.ToLongTimeString());
    }

我的 Hub 类:

public class EventHub: Hub
{
    public void Send(string message)
    {
        Clients.All.broadcastMessage( message);
    }
}

Javascript:

$(function () {

    var context = $.connection.eventHub;
    context.client.broadcastMessage = function (message) {

    alert("clock: " + message);
    };
    $.connection.hub.start();
});

没有错误,但在运行应用程序时没有发生任何事情。我怎么了?

【问题讨论】:

    标签: c# asp.net .net signalr real-time


    【解决方案1】:
    context.Clients.All.Send(DateTime.Now.ToLongTimeString());
    

    这将在客户端触发一个方法Send,它不会调用

    public void Send(string message)
    {
        Clients.All.broadcastMessage( message);
    }
    

    【讨论】:

    • 您正在收听一个永远不会触发的事件“broadcastMessage”,您应该收听“发送”或更正您的代码
    最近更新 更多