15
我想获得一个超级简单的集线器连接工作的跨域,但没有运气。我读过几十篇文章,完成了所有提到的内容,但仍然没有成功。如何让SignalR集线器连接工作在跨域?
我的服务器枢纽是这里
public class ChatHub : Hub
{
public void Send(string name, string message)
{
Clients.All.broadcastMessage(name, message);
}
}
我的服务器MapHubs调用是在这里
RouteTable.Routes.MapHubs(new HubConfiguration { EnableCrossDomain = true });
我的任何JavaScript客户端在这里
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script src="~/Scripts/jquery-2.0.1.min.js"></script>
<script src="~/Scripts/jquery.signalR-1.1.2.min.js"></script>
<script src="/signalr/hubs"></script>
</head>
<body>
<div class="container">
<input type="text" id="displayname" value="Test" />
<input type="text" id="message" value="I'm here" />
<input type="button" id="sendmessage" value="Send" />
</div>
<script type="text/javascript">
$(function()
{
$.connection.hub.url = 'http://<my url>/';
var chat = $.connection.chatHub;
alert(chat);
$.connection.hub.start().done(function()
{
alert("Connection succeeded");
}).fail(function()
{
alert("Connection failed");
});
});
</script>
</body>
</html>
的问题是,它从来没有达到连接成功或失败警报并且警报(聊天)调用返回未定义。
我试过几种组合为$ .connection.hub.url线
$.connection.hub.url = 'http://<My url>';
$.connection.hub.url = 'http://<My url>/';
$.connection.hub.url = 'http://<My url>/signalr';
$.connection.hub.url = 'http://<My url>/signalr/';
在Chrome和Firebug的开发者控制台给我的错误
Uncaught Error: SignalR: Error loading hubs. Ensure your hubs reference is correct, e.g. <script src='/signalr/hubs'></script>.
在同一个域它工作正常。这真的开始让我疯狂,所以任何帮助将不胜感激。
感谢, 杰森
太棒了,谢谢!我实际上已经尝试过使用手动代理方法(2),但没有运气,但当时我一定有其他错误。我试了一遍,并得到它的工作。现在让它在PhoneGap上工作,但这是另一天的挑战。 – Jason
@Jason - phonegap和signalr的运气?下周想要破解这一个,将有助于听取其他人的支持 –
@DeeMac - 我们最终没有开展项目(客户资金问题),所以我没有真正做到。从我看到的信号来看,自从我上次使用它以来,SignalR已经发展了很多。尽管玩得开心,这是一个非常酷的技术。 – Jason