我尝试使用Silverlight4和轮询双工来启用流响应,但当更新发送到客户端的速率大于maxOutputDelay时,我发现有奇怪的行为,这导致不发送任何更新。
例如,如果maxOutputDelay为7秒,并且每10秒发送一次更新,则一切正常。但是如果我有一个1秒的maxOutputDelay,并且每500毫秒发送一次更新,那么更新只是停留在服务器端,而不是发送到客户端。
据我所知,将transferMode=设置为“StreamedResponse”应该立即将更新发送到客户端,但这似乎不起作用。
下面是我的Web.config中web服务的绑定:
此配置基于本文中的信息:http://blogs.msdn.com/b/silverlightws/archive/2010/06/25/http-duplex-improvements-silverlight-4.aspx
谢谢。
发布于 2011-05-09 19:58:21
如果您不完全专注于使用双工通道(在任何情况下配置双工通道都很痛苦),那么可能值得查看实现服务器回调的替代解决方案-即使这意味着您必须维护到后端的两种不同类型的连接。
双工通道备选方案:
发布于 2012-02-29 12:44:02
我认为这篇文章回答了这个问题:
http://blogs.msdn.com/b/silverlightws/archive/2010/07/16/pollingduplex-multiple-mode-timeouts-demystified.aspx
maxOutputDelay更像是一个消息内计时器。因此,如果您的消息速率超过此延迟,在缓冲区填满之前,您将永远不会触发刷新。它在添加到队列中的每条新消息上被重置。因此,我想我们必须调整队列大小以及此计时器,以实现最大的实际延迟。
我不确定为什么流响应仍然缓冲,但我也看到了。有人知道如何调整缓冲区大小吗?
编辑Ok,这篇文章说我们不能控制流传输响应的缓冲(在自托管中是16k,在IIS中是32k )。因此,考虑到这一点,以高于最大输出延迟的速率传入的小消息似乎是一种病态情况。也许我得用数据填充它们。
http://blogs.msdn.com/b/silverlightws/archive/2010/06/25/http-duplex-improvements-silverlight-4.aspx
https://stackoverflow.com/questions/3820942
复制相似问题