zoukankan      html  css  js  c++  java
  • [.Net 5.0] 7.SignalR 使用的姿势

    前文[https://www.cnblogs.com/catzhou/p/14048348.html](6.SignalR 连接数量的限制),抱怨了只能连接5000个客户端,期间还找了很多办法,试图突破五千的限制。

    其实是忘了实时连接是一个奢侈的东西,应该是在需要的时候连接上,在不需要的时候尽快短线离开。
    https://docs.microsoft.com/zh-cn/aspnet/core/signalr/configuration?view=aspnetcore-5.0有:

    配置服务器选项:

    ClientTimeoutInterval 30 秒 如果客户端未收到消息 (在此时间间隔内包含 keep-alive) ,服务器将认为客户端已断开连接。 由于实现方式的原因,客户端实际标记为断开连接可能需要更长的时间。 建议值为值的两倍 KeepAliveInterval 。

    KeepAliveInterval 15 秒 如果服务器未在此时间间隔内发送消息,则会自动发送 ping 消息,使连接保持打开状态。 更改时 KeepAliveInterval ,请更改 ServerTimeout / serverTimeoutInMilliseconds 客户端上的设置。 建议 ServerTimeout / serverTimeoutInMilliseconds 值为值的两倍 KeepAliveInterval 。

    配置客户端选项:

    ServerTimeout 30秒 (30000 毫秒) 服务器活动超时。 如果服务器未在此时间间隔内发送消息,则客户端会将服务器视为断开连接,并 Closed onclose 在 JavaScript) 中触发事件 (。 此值必须足够大,以便从服务器发送 ping 消息 ,并 在超时间隔内由客户端接收该消息。 建议值至少为服务器值的两倍 KeepAliveInterval ,以允许 ping 到达的时间。

    KeepAliveInterval 15 秒 确定客户端发送 ping 消息的间隔。 如果从客户端发送任何消息,则会将计时器重置为间隔的开始时间。 如果客户端没有在服务器上的设置中发送消息 ClientTimeoutInterval ,则服务器会将客户端视为已断开连接。

    意思就是空闲的时候,服务器每隔15秒向客户端发送ping消息,客户端每隔15秒向服务端发送ping消息,如果超时为收到消息,则认为断线了。

  • 相关阅读:
    dubbo 学习
    JSTL 实现 为Select赋多个值
    Spring MVC 单元测试Demo
    IDEA git commit push revert
    高并发处理
    Redis Expire TTL命令
    Redis 原子操作INCR
    Redis 安装
    慢日志查询
    angularJs 处理多选框(checkbox)
  • 原文地址:https://www.cnblogs.com/catzhou/p/14062788.html
Copyright © 2011-2022 走看看