2012-11-02 2 views
1

나는 "Broadcasting over a Hub from outside of a Hub"을 따르고 있지만 클라이언트 브라우저에는 메시지가 표시되지 않습니다. 오류도 없습니다. 그것은 hubContext를 가져 와서 메시지를 보낼 때 signalR이 내 브라우저에 대해 알지 못하는 것과 같습니다.SignalR을 사용하여 서버에서 클라이언트로 전화하는 방법은 무엇입니까?

그러나 클라이언트에서 허브로 호출 할 때 허브가 예상대로 작동합니다.

내 허브 : 서버에서 다른 시간과 장소에서

[HubName("myHub")] 
public class MyHub : Hub 
{   
    public void SaySomething(string message) 
    { 
     Clients.say(message); 
    } 

    public void SayHelloWorld() 
    { 
     Clients.say("hello world"); 
    } 

} 

코드 :

var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>(); 
context.Clients.say(message); 

그리고 내 클라이언트 스크립트 :

<script src="Scripts/jquery.signalR-0.5.3.js" type="text/javascript" > </script> 
<script src="signalr/hubs"> </script> 

<script type="text/javascript"> 
    var hub = $.connection.myHub; 

    $.extend(hub, { 
     Say: function(message) { 
      alert(message); //this only works when the sayHelloWorld() method is executed 
     } 
    }); 

    $.connection.hub.start() 
     .done(function(){ 
      hub.sayHelloWorld(); //this works 
     }); 
</script> 
+0

이 코드는 저에게 잘 맞습니다. 어떤 브라우저를 사용하고 있으며 어디에서 허브 외부로 브로드 캐스트하려고합니까? –

+0

Windows에서 Chrome 22.0.1229.94 m을 사용하고 있습니다. 내 코드에서 여러 곳에서 방송을 시도했는데, 내 UI 계층 (낸시 사용), 도메인 서비스 계층 및 내가 생각할 수있는 모든 곳에서. –

+0

@akoeplinger 당신은 코드가 당신을 위해 일한다고 말한다. 내 작품도 마찬가지입니다. ConnectionManager를 사용하여 브로드 캐스트를 사용하여 say 메소드를 호출 할 수 있습니까? 방금 시작하여 SignalR 위키에 따라 솔루션을 다시 빌드 한 것과 같은 결과를 얻었습니다. 나는 클라이언트에서 서버로 (같은 인스턴스에서 클라이언트로 서버를 허용) 통신 할 수 있지만 방송 할 수는 없다. 오류도 메시지도 없다. –

답변

0

하는 최신 nuget 패키지를 사용하는 경우 (v 1.0.1) 시도 :

,

그리고 : 허브에 대한

$.connection.hub.start() 
     .done(function(){ 
      hub.server.sayHelloWorld(); //this works 
     }); 

SignalR 정의 클라이언트와 서버 속성, 나는 비디오에서 MoveShape 샘플을 시도하고 같은 문제에 직면했다.

희망 하시겠습니까?

관련 문제