首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >404来自服务器事件心跳端点

404来自服务器事件心跳端点
EN

Stack Overflow用户
提问于 2019-01-31 21:28:11
回答 1查看 213关注 0票数 1

我们从来自频道订阅的服务器事件中收到比例较低但一致的404。这似乎只是通过我们的react接口实现的,它在这里使用了typescript适配器:

https://docs.servicestack.net/typescript-server-events-client

如果我理解正确的话,404会在客户端在超时设置之前没有响应心跳时返回,因此传递的id是无效的。(HeartbeatInterval =60,IdleTimeout = 180)

查看应用程序洞察发现,330个应用程序中有6个在一小时内失败:

404s logged

深入研究请求,似乎没有什么不对劲的地方:

Request Properties

问题是,即使DebugMode和ReturnInnerException都为真,我也看不到服务器上的任何东西在报告中抛出错误或缺少is。我已经在一个本地副本和服务器上运行了这个程序,其中的c#客户端连接到服务器事件提要,在观察fiddler时,似乎无法返回404。

有没有一种方法可以捕获这些服务器端,并了解它们为什么返回404?我只能假设有一些东西失败并返回404,但它隐藏在服务堆栈日志处理层后面。这是否会报告给记录层,因为它可能会重复发生,因此被丢弃?

EN

Stack Overflow用户

回答已采纳

发布于 2019-02-01 02:39:23

心跳中的404响应是由subscription no longer existing引起的,您可以使用OnHeartbeatInit回调来检查每个心跳,例如:

代码语言:javascript
运行
复制
Plugins.Add(new ServerEventsFeature
{
    OnHeartbeatInit = req =>
    {
        var subscriptionId = req.QueryString["id"];
        var subscription = req.TryResolve<IServerEvents>().GetSubscriptionInfo(subscriptionId);
        if (subscription == null)
        {
            //... subscription no longer exists
        }
    }
});

这将允许您检查404个心跳响应的订阅,但它不会告诉您订阅被删除的原因。

当订阅被取消订阅时,您可以处理OnUnsubscribe来获取回调,这应该有助于确定订阅被删除的原因。

为了帮助调试,您可以升级到现在具有embedded pdbs and source-link enabledlatest v5.4.1 on MyGet,它允许您轻松地调试到ServiceStack源代码中。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54461684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档