2014-04-30 47 views
2

Signalr通常通过集线器和连接在“服务器端”asp.net中使用。我试图完成的(如果可能的话)是使用signalr作为网站中的“客户端”。 我有2个网站,一个作为服务器,另一个作为客户端。如何使用signalr作为asp.net网站的客户端?

我想这

public void Start() 
    { 
     new Task(this.Listen).Start(); 
     //new Thread(this.Listen).Start(); 
    } 
    private async void Listen() 
    { 
     try 
     { 
      using (var hubConnection = new HubConnection("http://localhost:8081")) 
      { 
       var myHub = hubConnection.CreateHubProxy("mediaHub"); 

       hubConnection.StateChanged += change => System.Diagnostics.Debug.WriteLine(change.OldState + " => " + change.NewState); 

       myHub.On<string>(
        "log", 
        message => 
         System.Diagnostics.Debug.WriteLine(message + " Notified !")); 

       await hubConnection.Start();     

      } 
     } 
     catch (Exception exc) 
     { 
      // ... 
     } 
    } 

服务器调用客户端这样的:

 var hub = GlobalHost.ConnectionManager.GetHubContext<MediaHub>() ; 
     hub.Clients.All.log("Server: " + message); 

没有到达客户端!

+0

您使用的浏览器是? – brumScouse

+1

没有涉及到浏览器,它是.NET客户端 – Wasp

回答

2

只要您的连接准备就绪,您实际上就会处理它,所以它不会停留在周围。作为一个快速测试,删除using的东西,并让你的hubConnection成为你的类的静态成员,并检查你是否被调用。如果你这样做,那么从那里你可以改进它,但至少你已经清楚发生了什么。