Signalr 信号员:协商请求期间出错:未定义
我一直在尝试让javascript signal-r客户端与自托管owin服务器协同工作。我遇到了这个问题。我尝试了代理和无代理两种方法,结果都是相同的,错误是“signer:error-during-negotiation-request:undefined” 我已经能够让跨域示例运行,没有任何问题,也无法找出我做错了什么,有人有什么想法吗 浏览器控制台获取尝试协商的日志,然后我得到失败 服务器/集线器Signalr 信号员:协商请求期间出错:未定义,signalr,signalr-hub,signalr.client,Signalr,Signalr Hub,Signalr.client,我一直在尝试让javascript signal-r客户端与自托管owin服务器协同工作。我遇到了这个问题。我尝试了代理和无代理两种方法,结果都是相同的,错误是“signer:error-during-negotiation-request:undefined” 我已经能够让跨域示例运行,没有任何问题,也无法找出我做错了什么,有人有什么想法吗 浏览器控制台获取尝试协商的日志,然后我得到失败 服务器/集线器 namespace SignalROwinHost { class Program
namespace SignalROwinHost
{
class Program
{
static void Main(string[] args)
{
string url = "http://localhost:9000/";
using (WebApplication.Start<Startup>(url))
{
Console.WriteLine("Server running on {0}", url);
Console.ReadLine();
}
}
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapHubs();
}
}
public class ChatHub : Hub
{
public void Send(string message)
{
Clients.All.send(message);
}
}
}
}
namespace SignalROwinHost
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串url=”http://localhost:9000/";
使用(WebApplication.Start(url))
{
WriteLine(“在{0}上运行的服务器”,url);
Console.ReadLine();
}
}
公营创业
{
公共无效配置(IAppBuilder应用程序)
{
app.MapHubs();
}
}
公共类聊天室:聊天室
{
公共无效发送(字符串消息)
{
Clients.All.send(message);
}
}
}
}
Javascript(无代理):
$(函数(){
变量连接=$.hubConnection('http://localhost:9000');
var chat=connection.createhubbroxy('chatHub');
聊天室开启('send',功能(消息){
$('#chat').html($('#chat').html()+“\r\n”+消息);
});
connection.logging=true;
connection.start().done(函数(){
警报(“连接完成”);
$('#sendBtn')。单击(函数(){
invoke('send',$('#message').val());
});
}).fail(函数(param){alert(param);});
});
Javascript(代理):
$(函数(){
var chat=$.connection.chatHub;
chat.client.send=函数(消息){
警报(信息);
};
$.connection.hub.logging=true;
$.connection.hub.url=”http://localhost:9000/signalr";
$.connection.hub.start()
.done(函数(参数){
chat.server.send(“已连接”);
})
.失败(功能(参数){
警报(“无法连接:+param”);
});
});
如果您使用的是SignalR 1.0.0(现在正式发布,您应该这样做),则需要将调用更改为MapHubs
,以启用跨域请求。这是假设您的网站不是由localhost:9000提供的。我猜不是,因为您正在将url传递到$.hubConnection
app.MapHubs(new HubConfiguration { EnableCrossDomain = true });
在1.0.0最终发行版之前,CORS默认启用。我有所有这些功能,它可以在每个浏览器上使用,但在IE 10中不起作用。有什么想法吗?
<script src="http://localhost:9000/signalr/hubs" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
var chat = $.connection.chatHub;
chat.client.send = function (message) {
alert(message);
};
$.connection.hub.logging = true;
$.connection.hub.url = "http://localhost:9000/signalr";
$.connection.hub.start()
.done(function (param) {
chat.server.send("Connected");
})
.fail(function (param) {
alert("Could not Connect: " + param);
});
});
</script>
app.MapHubs(new HubConfiguration { EnableCrossDomain = true });