SignalR2.2跨域推送问题
现在楼主有个服务器主动推送消息到web客户端的功能。做了个demo.遇
服务器A是个控制台程序,作为SignalR.SeftHost的自托主机,放在192.168.0.10:8080。下面开启监控的代码
public void Configuration(IAppBuilder app)
{
app.Map("/signalr",
map =>
{
//允许跨域
map.UseCors(CorsOptions.AllowAll);
map.RunSignalR();
}
);
}
客户端是web页面,用SignalR.js作为客户端,放在192.168.0.70:7000上。下面是推送的js代码
<script src="Scripts/jquery-1.6.4.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.1.min.js"></script>
<script src="http://192.168.0.10:8080/signalr/hubs"></script>
<script type="text/javascript">
$(function () {
$('#displayname').val(prompt('Enter your name:', ''));
$('#message').focus();
$.connection.hub.url = "http://192.168.0.10:8080/signalr";
var messagePushHub = $.connection.messagePushHub;
//错误
$.connection.hub.error(function (err) {
alert("存在一个错误. \n" +
"Error: " + err.message);
});
//成功连接之后
$.connection.hub.start().done(function () {
messagePushHub.server.message();
});
//获取Data
messagePushHub.client.messageResult = function (name, message) {
var encodedName = $('<div />').text(name).html();
var encodedMsg = $('<div />').text(message).html();
$('#discussion').append('<li><strong>' + encodedName
+ '</strong>: ' + encodedMsg + '</li>');
};
});
</script>
现在问题是这样的。web客户端访问不了 <script src="http://192.168.0.10:8080/signalr/hubs"></script>这个生成的hub,导致下面都走不下去。假如服务器A和客户端B都部署在同一服务器内,也就是说服务器监听地址改成http://localhost:8080,客户端请求 也<script src="http://localhost:8080/signalr/hubs"></script>,这样的话就可以成功推送消息。
大神有没有办法解决啊。在网上查询了跨域的问题,差不错都是这么写的。我也写在了别人做的demo。同样是本机可以。放在两个不同的服务器就推送不了。