我如何从Signalr定期接收消息给所有客户端,无需客户端输入?
问题描述:
我是SignalR的新手。我需要将信息从SignalR自动发送到所有连接的客户端,而无需客户端输入?我如何从Signalr定期接收消息给所有客户端,无需客户端输入?
上面的过程必须重复递归吗?
可能吗?
没有客户端输入,SignalR可以重复自动发送消息给客户端?
这是我的JavaScript cleint代码:
$(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();
}
}
谁能给我一个解决方案?
答
如果您将继续像现在一样递归调用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循环永远困。
谢谢你的answer.it工作正常..但之后,我得到一个exception.how我解决它吗? Uncaught TypeError:无法读取未定义的属性'client' – creator
@ G.Thirunavukkarasu这是[另一个问题](http://stackoverflow.com/questions/14146913/signalr-cannot-read-property-client-of-undefined)其中目标更多SignalR在客户端:) – meJustAndrew
谢谢安德鲁。我会检查 – creator