SignalR2.2跨域推送问题

mr1son 2016-12-16 06:53:23
现在楼主有个服务器主动推送消息到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。同样是本机可以。放在两个不同的服务器就推送不了。
...全文
669 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mr1son 2016-12-16
  • 打赏
  • 举报
回复
解决了。原因是服务端监控的时候要写成http://*:8080,而且要用管理员身份运行才可以。不然会报错。
mr1son 2016-12-16
  • 打赏
  • 举报
回复
在补冲一点,我在主机A和主机B,都Telnet端口,都是通的
mr1son 2016-12-16
  • 打赏
  • 举报
回复
服务器A是win2008 r2 服务器B 是win10, 把服务端和客户端无论同放在A上或者同放在B上,都可以跑成功,但是分开来一个放A,一个放B,这样就是访问不了hub.

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧