2016-11-24 1 views
0

저는 SignalR을 처음 사용합니다. 클라이언트 입력없이 일부 지연으로 자동으로 SignalR에서 연결된 모든 클라이언트로 메시지를 보내야합니까?클라이언트 입력없이 Signalr에서 모든 클라이언트로 주기적으로 메시지를 수신하는 방법은 무엇입니까?

반복적으로 위의 과정을 반복해야합니까?

가능합니까?

클라이언트 입력이 없으면 SignalR은 클라이언트에 자동으로 메시지를 보낼 수 있습니까?

이 내 자바 스크립트 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(); 

    } 
} 

사람이 나에게를 제공 할 수 이것에 대한 해결책?

답변

1

지금처럼 Send() 메서드를 재귀 적으로 호출하면 stackoverflow 예외가 발생합니다. 그냥 while(true) 루프 방법 내부의 코드를 포장 : 내가 다른 스레드에 Send() 방법을 이동 제안

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); 
     } 
    } 
} 

을, 현재의 thread가이 while 루프에 영원히 갇혀 얻을 것이다 때문이다.

+0

답변 주셔서 감사합니다.하지만 그 후에는 예외가 있습니다. 해결할 수 있습니까? Uncaught TypeError : 정의되지 않은 – creator

+1

@ G.Thirunavukkarasu의 'client'속성을 읽을 수 없습니다. [다른 질문] (http://stackoverflow.com/questions/14146913/signalr-cannot-read-property-client-of-undefined) 클라이언트 측에서 더 많은 SignalR을 목표로 함 :) – meJustAndrew

+0

Andrew에게 감사드립니다. 나는 그것을 검사 할 것이다. – creator

관련 문제