2017-10-13 21 views
0

Je travaille avec le projet SignalR, dans lequel je veux utiliser Hub dans un projet WebApi ainsi que dans un projet Web. J'ai donc créé un projet de bibliothèque de classes et mis en place Hub ici.Comment se connecter Hub si Hub est dans un projet différent SignalR?

Ma structure de projet ressemble:

-ChatHub 
    -Hub 
-Webapi 
-Website 

Voici mon Hub:

[HubName("chathub")] 
public class ChatHub : Hub 
{ 
    public override Task OnConnected() 
    { 
     return base.OnConnected(); 
    } 

    public override Task OnReconnected() 
    { 
     return base.OnReconnected(); 
    } 
} 

Quand j'appelle Hub de mon site web, il fonctionne bien.

<script src="~/signalr/hubs"></script> 
var chatHub = $.connection.chathub; 

Voici comment je me connecte Hub de l'extérieur (Android):

mHubConnection = new HubConnection(http://{IpAddress}/ChatApp/); 
mHubProxy = mHubConnection.createHubProxy(chathub); 

API:

public IHttpActionResult LoginUser([FromBody]LoginModel model) 
{ 
    var hubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>(); 
    //chatUser logic here 
    hubContext.Clients.Client(chatUser.ConnectionId).receiver(response); 
} 

Mais il me donne une erreur:

java.util.concurrent.ExecutionException: microsoft.aspnet.signalr.client.transport.NegotiationException: There was a problem in the negotiation with the server 10-13 18:15:54.074 18686-18686/com.chatapp.android W/System.err: Caused by: microsoft.aspnet.signalr.client.http.InvalidHttpStatusCodeException: Invalid status code: 404

Comment pouvons-nous connecter Hub si mon Hub est en dehors du projet API?

J'ai traversé Sharing a SignalR hub between a WebApi and MVC project mais je n'ai pas obtenu la réponse qui leur a été fournie.

Répondre

1

Appelez-vous mHubConnection.Start() après avoir configuré la connexion et le proxy au concentrateur? Est-ce que l'URL transmise au constructeur HubConnection est l'emplacement correct pour le concentrateur? Voici quelques liens qui pourraient vous être utiles, si vous ne les avez pas déjà passés: Access hub from .NET client, configure signalr url