首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对SignalR保持活跃的ping作出反应

对SignalR保持活跃的ping作出反应
EN

Stack Overflow用户
提问于 2014-06-11 19:35:58
回答 1查看 2.4K关注 0票数 3

SignalR服务器应用程序能对SignalR内部使用的保持存活的ping做出反应吗?

我正在开发一个应用程序,它将为signalr客户端执行昂贵的查询。查询将不会在与服务器连接的同一台计算机上执行。这些查询运行起来很昂贵,而且很容易重新启动,因此执行该工作的工作人员不希望为断开连接的客户端或不可访问的或向下的服务器进行工作;他们希望确保客户机仍然在那里。这可以通过简单地让客户端在某个时间间隔内平web服务器来实现,然后web服务器可以将ping传递给工作人员。

代码语言:javascript
运行
复制
public class PingedHub : Hub
{
    private readonly IPingListener _listener;

    public Hub(IPingListener listener)
    {
        _listener = listener;
    }

    public Ping()
    {
        _listener.Ping(Context.ConnectionId);
    }
}

SignalR已经这么做了。为了检测丢失的连接,如果在一段时间内没有传输其他通信量,则SignalR发送一个保持活动的ping,由GlobalHost.Configuration.KeepAlive配置。如果它在较长的时间内没有接收到任何由GlobalHost.Configuration.ConnectionTimeout配置的通信量,它会断开客户端的连接并引发OnDisconnected

是否有可能连接到现有系统以获得客户端已连接的积极保证,或者客户端是否需要发送冗余的ping?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-11 19:54:50

没有必要连接到SignalR连接系统。pings不会是多余的;如果您的客户端发送pings的次数至少和GlobalHost.Configuration.KeepAlive一样多,那么SignalR就不会发送它自己的保持存活的pings。

如果您确实找到了一种连接到SignalR系统的方法,您将面临一个新的问题。当有其他流量时,就不会发送“保持活着”的请求,但是您的工作人员仍然想知道客户仍然活着。如果通信通道由于其他原因而处于活动状态,那么您必须选择使用pings发送垃圾邮件给工作人员,还是设置一些中间系统来控制它们。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24171179

复制
相关文章

相似问题

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