如何连接集线器如果集线器是在不同的项目SignalR?(How to connect Hub if

2019-09-30 17:26发布

我与SignalR项目,其中我想的WebAPI项目以及Web项目使用集线器工作。 所以,我创建了一个类库项目,并在那里执行中心。

我的项目结构如下:

-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:有与服务器10-13 18谈判一个问题:15:54.074 18686-18686 / com.chatapp.android W /系统.ERR:致:microsoft.aspnet.signalr.client.http.InvalidHttpStatusCodeException:无效的状态码:404

我们如何可以连接集线器,如果我的枢纽超出API项目的一面呢?

我已经经历了一个的WebAPI和MVC项目之间共享一个SignalR枢纽 ,但没有得到他们所提供的答案。

Answer 1:

你设置到集线器的连接和代理后调用mHubConnection.Start()? 也就是网址被传递到HubConnection构造为中心的正确位置? 这里有几个可能会有所帮助,如果您还没有被通过他们的联系: 从.NET客户端接入集线器 , 配置signalr网址



文章来源: How to connect Hub if Hub is in different project SignalR?