我在网上做了很多研究,但无法找到解决方案。我在WebAPI后端创建了一个SignalR集线器并启用了CORS功能。
我还有一个客户端(Ionic)应用程序尝试连接到SignalR中心进行实时聊天。问题是,当Hybrid应用程序尝试连接到SignalR中心时,我正在
ConnectionId的格式不正确。
我在SignalR Hub上获得OnDisconnected
事件,但不是OnConnected
事件!
这是我的客户代码(离子):
var signalr_chatHub = $.connection.ChatHub;
signalr_chatHub.client.welcomeMessage = function (message) {
console.log('WelcomeMessage', message);
};
$.connection.hub.url = "http://localhost:64965/signalr";
$.connection.hub.logging = true;
$.connection.hub.start().done(function () {
console.log('signal connection connected');
}).fail(function (err) {
console.log('Could not Connect!', err);
});
Chrome控制台错误:
public class ChatHub : Hub<IChat>
{
public override Task OnConnected()
{
var connectionId = Context.ConnectionId;
return base.OnConnected();
}
public override Task OnDisconnected(bool stopCalled)
{
var connectionId = Context.ConnectionId;
return base.OnDisconnected(stopCalled);
}
public override Task OnReconnected()
{
return base.OnReconnected();
}
public void WelcomeMessage()
{
Clients.All.NewMessage("Welcome");
}
}
答案 0 :(得分:0)
科尔多瓦有机会吗?
发生这种情况的原因是因为ripple创建了一个“跨域代理”,它会从signalR中获取所有生成的uri,并错误地对部分进行编码。
fix is:set ripple,settings =&gt;跨域代理到“禁用”
下面的是代理请求的示例,请注意http%3a8080 ...:
这个虫子花了我5个小时的生命,该死的小河马。