【问题标题】:SignalR generates lots of 403 errorsSignalR 生成大量 403 错误
【发布时间】:2015-09-02 16:40:21
【问题描述】:

我为网站创建了一个小模块,它使用 SignalR 来检测用户是否需要刷新浏览器。在本地它可以工作,但是当代码投入生产时,会产生数千个错误:

服务器端:(mainProject/Hubs 目录):

public class AppVersionNotifierHub : Hub<IAppVersionNotifierHub>
{
    public void CheckAppVersion(string version)
    {
        // if client has diffrent version, invoke callback
        if (Global.Version != version)
        {
            Clients.Caller.NewAppVersion(Global.Version);
        }
    }
}

Javascript(类型脚本):

this.subscribeVersionChecker = () => {
    var hub = (<any>$.connection).appVersionNotifierHub;

    hub.client.newAppVersion = (version: string) => {
        .. some logic
    }

    $.connection.hub.start(() => {
            hub.server.checkAppVersion(customerVersion.text());
    });

    $.connection.hub.reconnected(() => {
        setTimeout(() => {
            hub.server.checkAppVersion(customerVersion.text());
        }, 5000); // Restart connection after 5 seconds.
    });

    $.connection.hub.disconnected(() => {
        setTimeout(() => {
            $.connection.hub.start();
        }, 10000); // Restart connection after 10 seconds.
    });
};

任何想法为什么有些客户会产生错误?

  • 网站托管在 azure 上
  • 为了使用捆绑包,我将动态生成的 signalr.js 文件复制到 Scripts\signalrhub.js 文件中

【问题讨论】:

标签: c# azure asynchronous signalr


【解决方案1】:

我现在发现了问题。 问题出在身份验证上,我读过这篇文章:http://www.bitwisejourneys.com/signalr-authenticating-even-when-you-dont-think-it-is/,经过一番思考,我能够重现该问题。

  1. 在一个标签页中打开网站并登录
  2. 在另一个选项卡中打开网站并退出
  3. 在服务器上重启连接
  4. Tab 1 发送与 Tab 2 相同的身份验证令牌。服务器拒绝 Tab 1 但响应 Tab 2

我的解决方案:当连接丢失时,我不是尝试重新连接,而是停止并重新启动连接(注意我已将事件从 Reconnected 更改为 Reconnecting !)

    $.connection.hub.reconnecting(() => {
          $.connection.hub.stop();
          setTimeout(() => {
             $.connection.hub.start();
             }, 5000); // Restart connection after 5 seconds.
    });

【讨论】:

    猜你喜欢
    • 2020-12-11
    • 2019-09-28
    • 2015-06-23
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多