我可以将循环缓冲区减小到“ 1”吗?这是一个好主意吗?

半位

默认情况下,服务器上的环形缓冲区中默认存储有1,000条消息。

对于我来说,发送滞后的客户端1,000个更新对我来说没有任何意义,而只是发送最近的更新。在WCF中,我可以通过使用易失性数据来做到这一点。

我想我可以通过将缓冲区减小为“ 1”来模拟可变方法,但是不确定是否可以基于每个集线器或理想情况下基于每个方法进行配置。

如果我使用集线器或持久连接,这有关系吗?

支架73

即使将DefaultMessageBufferSize设置为1,SignalR也会确保每个缓冲区至少容纳32条消息。

最小缓冲区大小的主要目的是确保SignalR的长轮询传输在某种程度上可靠地工作。如果缓冲区大小实际上为1,则通过长轮询连接的客户端很可能会丢失两次轮询之间的消息。

我了解在某些应用程序中,只有最后一条消息很重要。不幸的是,到目前为止,SignalR还没有“易变”的消息传递配置。将缓冲区大小设置为32大约和它获得的一样好。至少客户端不应该在这么小的缓冲区大小上落后太多。

假设存在多个缓冲区是正确的,但是不能单独配置缓冲区大小。SignalR为每个“信号”创建一个环形缓冲区。“信号”可以是连接ID,组名,用户名,PersistentConnection名称(用于调用Connection.Broadcast时)和集线器名称(用于调用时Clients.All)。如果Clients.All在单个集线器中使用多种方法,则所有这些调用将最终在单个缓冲区中结束。

编辑:如果要在同一应用程序内部使用不同设置配置另一个SignalR端点,则可以执行以下操作:

using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Configuration;
using Owin;

// ...

public void Configuration(IAppBuilder app)
{
    // The following will setup a SignalR endpoint at "/signalr"
    // using settings from GlobalHost
    app.MapSignalR();

    var resolver = new DefaultDependencyResolver();
    var configuration = resolver.Resolve<IConfigurationManager>();

    configuration.DefaultMessageBufferSize = 32;

    // By specifying or own dependency resolver, we tell the
    // "/volatile" endpoint not to use settings from GlobalHost
    app.MapSignalR("/volatile", new HubConfiguration
    {
        Resolver = resolver
    });
}

// ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以将循环缓冲区减小到“ 1”吗?这是一个好主意吗?

来自分类Dev

将实例传递给__init__。这是一个好主意吗?

来自分类Dev

CentOS 7可以使用Zswap吗?如何监控Zswap?这是一个好主意吗?

来自分类Dev

在.NET List <T>中将项目设置为null是否可以将其用于垃圾回收,这是一个好主意吗?

来自分类Dev

将“ screen -r”放在我的.bashrc中是一个好主意吗?

来自分类Dev

在C ++构造函数中循环是一个好主意吗?

来自分类Dev

在我的代码中包含空块是一个好主意吗

来自分类Dev

片段将所有导航控件委托给Activity是一个好主意吗?

来自分类Dev

将Any用作Union类型是一个好主意吗?

来自分类Dev

片段将所有导航控件委派给Activity是一个好主意吗?

来自分类Dev

通过将布尔值转换为数组来减小JSON大小是一个好主意吗?

来自分类Dev

C ++创建一个头文件来解决循环依赖是一个好主意吗?

来自分类Dev

将所有帮助程序类合并到一个巨大的类中是一个好主意吗?

来自分类Dev

将加密的密码密钥存储在另一个表中是一个好主意吗?

来自分类Dev

将城市划分为多个区域,这是个好主意吗?

来自分类Dev

是否可以嵌套hazelcast IMaps?我可以期望出现鞭打副作用吗?反正这是个好主意吗?

来自分类Dev

将两个路由器相互连接是一个好主意吗?

来自分类Dev

将数组存储为字段值或将数组值存储为记录是一个好主意吗?

来自分类Dev

使用Android Studio(和Gradle)将.idea / libraries添加到.gitignore是一个好主意吗?

来自分类常见问题

将您的favicon.ico文件放在非根目录下不是一个好主意吗?

来自分类Dev

将数据作为键存储在具有空/空值的HashMap中是一个好主意吗?

来自分类Dev

将操作系统安装在固态驱动器上是一个好主意吗?

来自分类Dev

别名cd推送-这是一个好主意吗?

来自分类Dev

如果我将多个缓冲区沉入一个图像,我可以从 GStreamer 恢复多个图像吗?

来自分类Dev

我可以将 JSON 存储在 MySQL 数据库表字段中吗?就我而言,这是个好主意吗?如果是这样,如何?

来自分类Dev

将所有与数据库相关的方法都放在一个类中是一个好主意吗?

来自分类Dev

将Couchbase与Rails一起使用是个好主意吗?

来自分类Dev

将Express与Firebase一起使用是个好主意吗?

来自分类Dev

React:将子组件作为this.child存储在父构造函数中-这是一个坏主意吗?

Related 相关文章

  1. 1

    我可以将循环缓冲区减小到“ 1”吗?这是一个好主意吗?

  2. 2

    将实例传递给__init__。这是一个好主意吗?

  3. 3

    CentOS 7可以使用Zswap吗?如何监控Zswap?这是一个好主意吗?

  4. 4

    在.NET List <T>中将项目设置为null是否可以将其用于垃圾回收,这是一个好主意吗?

  5. 5

    将“ screen -r”放在我的.bashrc中是一个好主意吗?

  6. 6

    在C ++构造函数中循环是一个好主意吗?

  7. 7

    在我的代码中包含空块是一个好主意吗

  8. 8

    片段将所有导航控件委托给Activity是一个好主意吗?

  9. 9

    将Any用作Union类型是一个好主意吗?

  10. 10

    片段将所有导航控件委派给Activity是一个好主意吗?

  11. 11

    通过将布尔值转换为数组来减小JSON大小是一个好主意吗?

  12. 12

    C ++创建一个头文件来解决循环依赖是一个好主意吗?

  13. 13

    将所有帮助程序类合并到一个巨大的类中是一个好主意吗?

  14. 14

    将加密的密码密钥存储在另一个表中是一个好主意吗?

  15. 15

    将城市划分为多个区域,这是个好主意吗?

  16. 16

    是否可以嵌套hazelcast IMaps?我可以期望出现鞭打副作用吗?反正这是个好主意吗?

  17. 17

    将两个路由器相互连接是一个好主意吗?

  18. 18

    将数组存储为字段值或将数组值存储为记录是一个好主意吗?

  19. 19

    使用Android Studio(和Gradle)将.idea / libraries添加到.gitignore是一个好主意吗?

  20. 20

    将您的favicon.ico文件放在非根目录下不是一个好主意吗?

  21. 21

    将数据作为键存储在具有空/空值的HashMap中是一个好主意吗?

  22. 22

    将操作系统安装在固态驱动器上是一个好主意吗?

  23. 23

    别名cd推送-这是一个好主意吗?

  24. 24

    如果我将多个缓冲区沉入一个图像,我可以从 GStreamer 恢复多个图像吗?

  25. 25

    我可以将 JSON 存储在 MySQL 数据库表字段中吗?就我而言,这是个好主意吗?如果是这样,如何?

  26. 26

    将所有与数据库相关的方法都放在一个类中是一个好主意吗?

  27. 27

    将Couchbase与Rails一起使用是个好主意吗?

  28. 28

    将Express与Firebase一起使用是个好主意吗?

  29. 29

    React:将子组件作为this.child存储在父构造函数中-这是一个坏主意吗?

热门标签

归档