2013-08-16 2 views
0

signalR 위키에서 언급 한 OWIN 항목을 사용하여 self-hosting signalR 허브입니다.signalr 허브를 통해 시간 방송하기

20 초마다 '시계'그룹의 모든 회원에게 현재 시간을 방송하고 싶습니다. 브로드 캐스트를 처리하는 UpdateClock이라는 메서드가 허브에 있습니다.

그러나이 타이머를 실행하고 실제로 브로드 캐스트하려면이 작업을 수행하는 "가장 현명한"방법은 무엇입니까?

내가 보는 방식으로 허브에 호스트하는 서비스에 타이머가 있어야하며 허브에 연결하여 명령을 호출해야합니다. 기능이 거의없는 것 같아요. 허브 클래스에서 직접이 작업을 수행 할 수 있습니까? 먼저 연결을 만들 필요가 없습니다.

내가 지금까지 무엇을했는지 내가 더 간단하고 싶습니다 :

var signalConnection = new HubConnection(_signalREndPoint); 
var hubProxy = signalConnection.CreateHubProxy(_signalRHubName); 
signalConnection.Start().Wait(); 
hubProxy.Invoke(UpdateClock); 
signalConnection.Stop(); 

답변

0

당신은 허브의 컨텍스트를 얻고 자신의 서비스에서 클라이언트 메소드를 호출 할 수 있습니다

while (conditionToRun) 
{ 
    Thread.Sleep(WaitForInSeconds * 1000); 
    var context = GlobalHost.ConnectionManager.GetHubContext<YourHubName>(); 
    context.Clients.Group("clockGroupName").updateClock(DateTime.UtcNow); 
} 

이렇게하면 서버 쪽 이벤트를 클라이언트에 브로드 캐스팅해야하는 경우입니다.

관련 문제