2010-09-29 22 views
5

我試圖啓用使用Silverlight 4和輪詢雙工流的響應,但是當更新發送到客戶端的速率大於maxOutputDelay,這會導致不發送更新。StreamedResponse與Silverlight 4輪詢雙工不發送更新

例如,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

感謝。

回答

1

如果您不是完全專注於使用雙工通道(這是一種很難在單個主機場景中進行配置的問題),那麼可能需要查看實現服務器回調的其他解決方案 - 即使這意味着您必須維護到後端的兩種不同類型的連接。

雙工信道的替代品:

0

我認爲這篇文章回答了這個問題:

http://blogs.msdn.com/b/silverlightws/archive/2010/07/16/pollingduplex-multiple-mode-timeouts-demystified.aspx

的maxOutputDelay更像是一消息內部定時器。所以如果你的消息速率超過這個延遲,你將永遠不會觸發一次刷新,直到緩衝區填滿。它會在添加到隊列中的每條新消息中重置。所以我想我們必須調整隊列大小以及這個計時器來實現最大的實際延遲。

我不知道爲什麼流式響應仍然緩衝,但我也看到了。有誰知道如何調整緩衝區大小?好吧,這篇文章說,我們無法控制緩衝整數流式響應(它在自託管中爲16k,在IIS中爲32k)。所以,鑑於這種情況,看起來小信息以比maxoutputdelay更大的速度進入是一種病態情況。也許我必須用數據填充它們...

http://blogs.msdn.com/b/silverlightws/archive/2010/06/25/http-duplex-improvements-silverlight-4.aspx