如果集线器在不同的项目SignalR中,如何连接集线器?

问题描述:

我正在与SignalR项目合作,我想在WebApi项目以及Web项目中使用Hub。所以我创建了一个类库项目并在那里实现了Hub。如果集线器在不同的项目SignalR中,如何连接集线器?

我的项目结构如下:

-ChatHub 
    -Hub 
-Webapi 
-Website 

这里是我的枢纽:

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

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

当我从我的网站调用集线器它的工作好。

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

这是我如何连接集线器从外部(安卓):

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

但它给我一个错误:

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

如何如果我的Hub不在API项目中,我们可以连接Hub吗?

我已经通过Sharing a SignalR hub between a WebApi and MVC project但没有得到他们提供的答案。

在将连接和代理设置到集线器后调用mHubConnection.Start()吗?此外,传递给HubConnection构造函数的网址是集线器的正确位置?这里有几个链接可能会有所帮助,如果你还没有通过它们:Access hub from .NET clientconfigure signalr url