2015-10-28 11 views
5

Sto scrivendo un client di console C# per connettersi al servizio SignalR di un server. Usando un po 'di Wiresharking, Firebugging ed esaminando il .../signalr/documento hub sul server, sono stato in grado di connettersi al default "/ signalr" URL:Come "conoscere" un server SignalR non documentato?

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(); 

Ora ho bisogno di sapere

  • Quali hub sono disponibili sul server per la connessione? (chiedere un elenco)
  • Quali metodi posso richiamare sull'hub? (chiedere un elenco)
  • Quali servizi posso sottoscrivere? E quali saranno i nomi degli eventi che gestirò e le classi degli oggetti che riceverò?

Il IHubManager interfaccia o HubManagerExtensions classe sembrano promettenti, ma non era nemmeno in grado di scoprire, quali classi implementano e come usarlo. Asp.net/signalr offre solo documentazione di base ed esercitazioni.

Grazie in anticipo per avermi indicato nella giusta direzione!

risposta

3

Penso che quello che stai cercando sia qualcosa come un WSDL per SignalR.

No, SignalR non ha qualcosa di così complesso. Quello che puoi ottenere, manualmente, è dal proxy SignalR: ./signalr/hubs.

Se si guarda a questo codice dal proxy

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))); 
    } 
}; 

si ottiene solo:
- nomi hub (chatHub)
- metodi di server e il numero di parametri (serverMethod, 3 parametri)

Quindi, l'unica informazione è che il tuo hub è simile a questo:

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

I metodi client non sono realmente in alcun elenco e vengono utilizzati al volo. Puoi prenderli con Fiddler.

Problemi correlati