使用扭曲库时,如何区分服务器响应与服务器发送的公告消息?

时间:2018-09-28 07:00:02

标签: python twisted

这种情况是,我想让客户端应用程序连接到服务器(这是一个自定义的TCP协议),保持持久连接,有时发送一些请求,接收响应。到目前为止,我可以使用python扭曲库轻松实现一些目标。

但是,在这种情况下,服务器非常闲谈,可以随时决定将向其所有连接的客户端发送公告消息。从协议的角度来看,数据包头中有一个字段(我们将其称为packetid),它使我能够匹配请求响应,并从这些协议中区分公告数据包,从协议的角度来看这没有问题。

现在,我正在考虑如何实现能够处理此问题的代码,以区分来自服务器公告的传入响应。我的想法是简单地在自定义Protocol实现中维护一个字典,并为每个请求在其中存储Deferred对象(packetid是关键)。通过receivedData收到单个消息后,我将使用数据包中的packetid字段在字典中进行查找,并为相应的Deferred调用相应的回调(如果它是对某些消息的响应)之前的请求,否则将其作为服务器通告消息进行响应。

这个解决方案好吗,还是有一些更好的解决方案,也许是利用一些已经提供的扭曲机制?还有一些现有的协议具有相同的特性,该协议需要在同一连接内将响应与其他消息区分开(以便我可以从其实现中得到启发)?

0 个答案:

没有答案