WCF 服务清除缓冲区



我目前正在研究WCF服务,但有一个小问题。该服务是轮询双工服务。我通过发送到服务器的消息启动数据传输。然后,服务器通过回调通道相当快地将大数据包发送回客户端。

要停止我向服务器发送一条消息,告诉它停止。然后,它通过回调通道发送一条消息,确认这一点,让客户端知道。

问题是一堆数据包被缓冲起来,通过回调通道发送到客户端。这会导致长时间等待确认才能返回,因为它必须等待所有数据首先通过。

有什么方法可以清除服务器端回调通道的缓冲区吗?我不需要担心丢失数据,我只需要扔掉它并立即发送确认消息。

我不确定这是否可以引导您进入正确的方向...... 我有一个类似的服务,当我查看我的 Subscribe() 方法时,我可以访问它:

var context = OperationContext.Current;
var sessionId = context.SessionId;
var currentClient = context.GetCallbackChannel<IClient>();
context.OutgoingMessageHeaders.Clear();
context.OutgoingMessageProperties.Clear();

现在,如果您有一种方法可以使用 IClient 对象,并访问从中获取 IClient 实例的上下文(解析其上下文),那么运行以下两个语句是否可以执行您想要的操作?

context.OutgoingMessageHeaders.Clear();
context.OutgoingMessageProperties.Clear();

只是从我的思想中快速漫步。 很想知道这是否可以解决它,如果没有别的,个人信息。 您能否将操作上下文缓存为订阅对象的一部分,该订阅对象将包含 2 个属性,第一个用于操作上下文,第二个是您的 IClient 对象。

最新更新