我如何从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()方法,您将得到一个*异常。只是包装方法中的代码在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循环永远困。

+0

谢谢你的answer.it工作正常..但之后,我得到一个exception.how我解决它吗? Uncaught TypeError:无法读取未定义的属性'client' – creator

+1

@ G.Thirunavukkarasu这是[另一个问题](http://*.com/questions/14146913/signalr-cannot-read-property-client-of-undefined)其中目标更多SignalR在客户端:) – meJustAndrew

+0

谢谢安德鲁。我会检查 – creator