2017-03-15 15 views
0

私はローカルホストhttp://*:52080を持つサーバを実行しています。 同じコンピュータ上で、クライアントを実行してローカルIPハブhttp://192.168.1.102:52080/signalrに接続しようとしています。すべてがうまくいく。ローカルホストのSignalR

しかし、(同じローカルネットワークからの)別のコンピュータでクライアントを実行して、http://192.168.1.102:52080/signalrに接続しようとすると、接続しません。クライアントは例外をキャッチします("System.AggregateException" in mscorlib.dll)。

ハブがあるコンピュータのポート52080が開いています。

エラーの原因は何ですか?

サーバー:

using System; 
using Microsoft.Owin.Hosting; 

public class Program 
{ 
    static void Main(string[] args) 
    { 
     string url = "http://*:52080"; 
     using (WebApp.Start<Startup>(url)) 
     { 
      Console.WriteLine("Server running at {0}\n", url); 
      Console.ReadLine(); 
     } 
    } 
} 

Startup.cs

using Owin; 
using Microsoft.Owin.Cors; 

public class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     app.UseCors(CorsOptions.AllowAll); 
     app.MapSignalR(); 
    } 
} 

SGHub.cs

using System; 
using System.Threading.Tasks; 
using Microsoft.AspNet.SignalR; 
using System.Collections.Generic; 

public class SGHub : Hub 
{ 
    public static List<string> Users = new List<string>(); 

    public override Task OnConnected() 
    { 
     Console.WriteLine("\nOnConnected {0}", Context.ConnectionId); 
     Users.Add(Context.ConnectionId); 

     Clients.Caller.broadcastMessage("Server:", "Successful connection"); 
     Clients.Others.broadcastMessage("Server:", "New connection"); 

     return (base.OnConnected()); 
    } 
} 

クライアント:

using System; 
using Microsoft.AspNet.SignalR.Client; 
using Microsoft.AspNet.SignalR.Client.Hubs; 
using Newtonsoft.Json.Linq; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     string serverURL = "http://192.168.1.102:52080/signalr"; 

     Console.WriteLine("Connection to {0}\n", serverURL); 
     HubConnection hubConnection = new HubConnection(serverURL); 
     IHubProxy myHubProxy = hubConnection.CreateHubProxy("StartGameHub"); 

     myHubProxy.On<string, string>("Send", (name, message) => Console.Write("Recieved addMessage: " + name + ": " + message + "\n")); 
     myHubProxy.On("heartbeat",() => Console.Write("Recieved heartbeat \n")); 

     Subscription subscription = myHubProxy.Subscribe("broadcastMessage"); 
     subscription.Received += SubscriptionData; 

     while (true) 
     { 
      string key = Console.ReadLine(); 

      if (key.ToUpper() == "A") 
      { 
       try 
       { 
        Console.WriteLine("Start connect.."); 
        hubConnection.Start().Wait(); 
       } 
       catch (System.AggregateException e) 
       { 
        Console.WriteLine("Connected fauld :("); 
       } 
      } 
     } 
    } 

    private static void SubscriptionData(IList<JToken> obj) 
    { 
     Console.WriteLine(obj[1].ToString()); 
    } 
} 
+0

ファイアウォールがポートへの外部接続をブロックしていますか? – zmechanic

+0

着信接続用のファイアウォールで、ポート「52080」のルールを設定し、接続を許可しました。 – zRirez

+0

あなたの 'AggregateException'は実際にあなたに何を伝えていますか? – zmechanic

答えて

0

問題はコードと実装方法ではありませんでしたが、ルータのぎりぎりのグリッチでは、すべてのコンピュータを再起動してリブートした後、すべてが機能しました。