我与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枢纽 ,但没有得到他们所提供的答案。