首页 > 解决方案 > SignalR 在 Firefox 和 IE 中不起作用,但在 Chrome 中不起作用

问题描述

我是 Signalr 的新手。

我的项目需要在员工更新时立即更新并向用户显示促销代码。这在 Google Chrome 中运行良好,但在 Firefox 和 IE 中运行良好。没有任何错误显示给我。

这是我的代码:

$(function () {
        var hubNotify = $.connection.PromoCodeHub;

        $.connection.hub.start().done(function () {
            getData();
        });

        hubNotify.client.displayPromoCode = function () {
            getData();
        };

        $.connection.hub.disconnected(function ()
        {
            setTimeout(function ()
            {
                $.connection.hub.start().done(function ()
                {
                    getData();
                });
            }, 3000);  
        });
    });

这是我的startup.cs

using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(MyProject.Startup))]
namespace MyProject
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
           app.MapSignalR();
        }
    }
}

谷歌浏览器:更新促销代码时没有问题。

FireFox & IE:当页面完全加载时,它将运行 $.connection.hub.start().done()。其余的都行不通。

非常感谢您的帮助。谢谢。

标签: signalr

解决方案


如果我没记错的话,您需要在开始之前至少声明一个客户端方法,如下所示。不确定不同的浏览器行为。

    var hubNotify = $.connection.PromoCodeHub;

    hubNotify.client.displayPromoCode = function () {
        getData();
    };

    $.connection.hub.start().done(function () {
        getData();
    });

推荐阅读