2016-11-24 5 views
0

Я новичок в 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 Startup Класс:

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

    } 
} 

Может кто-нибудь предоставить мне решение для этого?

ответ

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() метод в другом потоке, так как текущий поток застрянет навсегда в это время цикла.

+0

спасибо, что ответ answer.it работает нормально .. но после этого я получил исключение. Как я его разрешаю? Uncaught TypeError: Невозможно прочитать свойство «клиент» неопределенного – creator

+1

@ G.Thirunavukkarasu это [другой вопрос] (http://stackoverflow.com/questions/14146913/signalr-cannot-read-property-client-of-undefined), который цели больше SignalR на стороне клиента :) – meJustAndrew

+0

Спасибо Andrew. Я проверю, что – creator