【发布时间】:2012-05-07 18:23:21
【问题描述】:
我目前正在开发 WCF 服务并遇到一个小问题。该服务是轮询双工服务。我通过发送到服务器的消息启动数据传输。然后服务器通过回调通道将大数据包相当快地发送回客户端。
要停止,我向服务器发送一条消息,告诉它停止。然后它通过回调通道发送一条消息,确认这一点,让客户端知道。
问题是一堆数据包被缓冲起来通过回调通道发送到客户端。这会导致等待确认返回的时间很长,因为它必须等待所有数据首先通过。
有什么方法可以清除服务器端回调通道的缓冲区?我不用担心丢失数据,只需将其丢弃并立即发送确认消息即可。
【问题讨论】:
-
我还没有想出一个好的解决方案。我什至不确定所有数据都在哪里缓冲。服务器正在发送数据,然后我告诉它停止,我看到服务器端发生了这种情况,但客户端在那之后继续获取数据几秒钟。如果我放慢发送速度,我没有问题。但这里的问题是连接速度会有所不同,我觉得这需要根据连接进行限制。即使我可以判断缓冲区何时为空也会有所帮助,然后我可以存储自己发送的数据。
标签: wcf service buffer pollingduplexhttpbinding