我正在尝试使用Silverlight 4启用流式响应并轮询双工,但是当发送到客户端的更新速率大于maxOutputDelay时,我会遇到奇怪的行为,这导致不会发送更新
例如,maxOutputDelay为7秒,每10秒发送一次更新,一切正常。但是,如果我的maxOutputDelay为1秒,并且每500毫秒发送一次更新,则更新只会位于服务器端,而不会发送到客户端。
我的理解是设置transferMode =“StreamedResponse”应该立即将更新发送给客户端,但这似乎不起作用。
这是Web服务的Web.config中的绑定:
此配置基于本文中的信息:http://blogs.msdn.com/b/silverlightws/archive/2010/06/25/http-duplex-improvements-silverlight-4.aspx
感谢。
答案 0 :(得分:1)
如果您并不完全专注于使用双工通道(除了单个主机方案之外的任何配置都很难配置),那么可能需要检查实现服务器回调的替代解决方案 - 即使这意味着您必须维护与后端的两种不同类型的连接。
双工频道替代方案:
答案 1 :(得分:0)
我认为这篇文章回答了这个问题:
maxOutputDelay更像是一个消息内定时器。因此,如果您的消息速率超过此延迟,则在缓冲区填满之前永远不会触发刷新。它会在添加到队列的每条新消息上重置。所以我想我们必须调整队列大小以及此计时器以实现最大实际延迟。
我不确定为什么流式响应仍会缓冲,但我也看到了。有谁知道如何调整缓冲区大小?
将帖子 好的,这篇文章说我们无法控制流式响应中的缓冲(在自托管中为16k,在IIS中为32k)。因此,考虑到这一点,似乎以大于maxoutputdelay的速率进入的小消息是一个病态案例。也许我必须用数据填充它们......
http://blogs.msdn.com/b/silverlightws/archive/2010/06/25/http-duplex-improvements-silverlight-4.aspx