SignalR 跨域设置


1.永久连接跨域设置

服务器端

//允许永久连接跨域
app.Map("/spy",map=> {
    map.UseCors(CorsOptions.AllowAll);
    //启用JSONP
    var config = new ConnectionConfiguration() {
        EnableJSONP=true
    };
    map.RunSignalR<ConnectionSpy>(config);
});

客户端

<script>
    $(function () {
        var connection = $.connection("http://localhost:54184/spy");
        connection.logging = true;
        connection.received(function (data) {
            $('#requests').append('<li>'+data+'</li>');
        });
        connection.start().done(function () {

        }).fail(function (err) {
            alert(err);
        });
    });
</script>
2.Hub集线器设置

服务器端

[assembly: OwinStartup(typeof(SignalRChat.Startup))]
namespace SignalRChat
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.Map("/signalr", map =>
            {
                map.UseCors(CorsOptions.AllowAll);
                var hubConfiguration = new HubConfiguration
                {
                    EnableJSONP = true
                };
                map.RunSignalR(hubConfiguration);
            });
        }
    }
}
客户端

我试图用signalr跨域但我得到错误消息调用Start函数时。错误消息"Uncaught TypeError: Cannot call method 'start' of undefined "
有你的signalr连接初始化和启动的问题,同时宣布代理参考中心。看下面的例子:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="/Scripts/jquery-1.6.4.min.js"></script>
    <script src="/Scripts/jquery.signalR-1.1.4.min.js"></script>
</head>
<body>
    <div></div>
    <script type="text/javascript">
        var connection = $.connection.hub.url ='http://localhost:9370/signalr';
        connection.hub.start()
          .done(function () {
              alert('Now connected, connection ID=' + connection.id);
          });
    </script>
</body>
</html>

<script src="/Scripts/jquery-1.6.4.min.js"></script>
<script src="/Scripts/jquery.signalR-1.1.4.min.js"></script>
<script src="http://localhost:9370/signalr/hubs"></script>

<script type="text/javascript">
    $.connection.hub.url ='http://localhost:9370/signalr';
    var yourHubProxy = $.connection.YourHubName;

    //Do something here with yourHubProxy

    $.connection.hub.start().done(function () {
        alert('Now connected, connection ID=' + $.connection.hub.id);
     });
</script>
另一件事,我不知道你为什么要使用不同版本的SignalR在你的服务器端和客户端。对我来说你有SignalR 2.x在你的服务器端和SignalR 1.1.4在你的有效方。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值