1

我是 SignalR 的新手。我需要在没有客户端输入的情况下自动从 SignalR 向所有连接的客户端发送消息吗?

上述过程必须重复,而递归?

是否可以?

在没有客户端输入的情况下,SignalR 可以自动向客户端重复发送消息吗?

这是我的 JavaScript 客户端代码:

$(function () {
    var chat = $.connection.timehub;
    $.connection.hub.start();
    chat.client.broadcastMessage = function (current) {
        var now = current;
        console.log(current);
        $('div.container').append('<p><strong>' + now + '</strong></p>');
    }
};

这是我的 Timehub

public class timehub : Hub
{
    public void Send(string current)
    {
        current = DateTime.Now.ToString("HH:mm:ss:tt");
        Clients.All.broadcastMessage(current);

        System.Threading.Thread.Sleep(5000);
        Send(current);
    }
}

这是我的 Owin 创业课程:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.MapSignalR();

    }
}

谁能为此提供解决方案?

4

1 回答 1

1

如果您Send()像现在一样继续递归调用该方法,您将得到一个 stackoverflow 异常。只需将方法内的代码包装在一个while(true)循环中:

public class timehub : Hub
{
    public void Send()
    {
        while(true)
        {
            var current = DateTime.Now.ToString("HH:mm:ss:tt");
            Clients.All.broadcastMessage(current);
            System.Threading.Thread.Sleep(5000);
        }
    }
}

我建议将该Send()方法移动到另一个线程,因为当前线程将永远卡在这个 while 循环中。

于 2016-11-24T15:35:27.653 回答