2017-03-09 224 views
2

在服務器上創建一個集線器連接到SignalR服務器

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

    public void Send(string name, string message) 
    { 
     Clients.All.broadcastMessage(name, message); 
     Console.WriteLine(SGHub.Users.Count); 
    } 
} 

在我連接到集線器

void Start() 
{ 
    hubConnection = new HubConnection(serverURL); 
    hubConnection.Error += HubConnectionError; 
    iHubProxy = hubConnection.CreateProxy("SGHub"); 
    Subscription subscription = iHubProxy.Subscribe("broadcastMessage"); 
    hubConnection.Start(); 
} 

如果服務器沒有運行在客戶端和客戶端試圖連接到Hub,應用程序掛起,如何避免這種情況?

+0

客戶「掛」了多久?我也使用SignalR,並且我有客戶端連接嘗試在一個線程中以避免這種情況。如果你想要我,我可以發佈我的代碼。從未遇到過凍結應用程序的問題 –

+0

我運行客戶端並嘗試連接到未運行的集線器。 客戶端在執行'hubConnection.Start();'後5-10秒沒有響應,Windows提供關閉應用程序。 如果不難,請在代碼中舉個例子。 – zRirez

回答

0

你可以嘗試啓動與HTTP請求流serverURL

且僅當服務器返回,你開始signalr連接流。

0

我建議把你的客戶端連接代碼放在一個線程中。我就是這麼做的。每次你有一個長時間運行的任務(比如在你的情況下等待超時),你在UI線程中這樣做,應用程序將凍結。

+0

客戶端在Unity 3D中,我不知道或者有可能在其中創建一個額外的線程。 – zRirez

+0

後端在C#中,不是嗎?至少您展示的代碼是C# –

+0

是的,後端在C#中 – zRirez