2015-10-28 12 views
5

我在寫一個C#控制檯客戶端來連接到服務器的SignalR服務。使用位Wireshark操作,Firebugging和服務器上檢查.../signalr /集線器的文件,我可以在默認的「/ signalr」 URL連接:如何「認識」一個無證的SignalR服務器?

var connection = new HubConnection("https://www.website.com"); 
    var defaultHub = connection.CreateHubProxy("liveOfferHub"); 

    connection.Start().ContinueWith(task => 
    { 
     if (task.IsFaulted) 
     { 
      Console.WriteLine("Error opening the connection:" + task.Exception.GetBaseException()); 
     } 
     else 
     { 
      Console.WriteLine("SignalR Connected"); 
     } 
    }).Wait(); 

現在我需要找出

  • 服務器上有哪些集線器可用來連接? (請求它們的列表)
  • 我可以在集線器上調用哪些方法? (詢問他們的名單)
  • 我可以訂閱哪些服務?我將要處理的事件的名稱以及我將要接收的對象的類別是什麼?

IHubManager接口或HubManagerExtensions類看好,但我並不甚至能找出什麼類實現它,以及如何使用它。 Asp.net/signalr只提供基本的文檔和教程。

在此先感謝您指點我正確的方向!

回答

3

我想你正在尋找的是類似於SignalR的WSDL

不,SignalR沒有那麼複雜的東西。手動獲取的是SignalR代理:./signalr/hubs

如果從代理

proxies.chatHub = this.createHubProxy('chatHub'); //hub name 
proxies.chatHub.client = { }; 
proxies.chatHub.server = { 
    serverMethod: function (firstParameter, secondParameter, thridParameter) { //hub method and number of parameters 
     return proxies.chatHub.invoke.apply(proxies.chatHub, $.merge(["ServerMethod"], $.makeArray(arguments))); 
    } 
}; 

看看這段代碼,你只能得到:
- 樞紐名(chatHub
- 服務器的方法和參數的數量(serverMethod,3個參數)

所以,唯一的信息是你的中心看起來像這樣:

[HubName("chatHub")] 
public class ?? : Hub 
{ 
    public ?? ServerMethod(?? firstParameter, ?? secondParameter, ?? thridParameter) 
    { 
     ?? 
    } 
} 

客戶端方法實際上並不在任何列表中,並且正在使用中。你可以用Fiddler來捕捉它們。