我正在尝试玩扭曲。我已经尝试使用适当的工厂创建服务器和客户端。这是一个很棒的框架,但只能发送字符串:(我想发送一些列表或数组对象作为开始,也许以后会使用客户端内服务器中的对象。但目前我被一些简单的问题所困扰:
1(在工厂模型中,我使用了"clientConnectionFailed"或"clientConnectionLost"之类的方法,如何使用PB获得相同的方法?它们对于防止客户端/服务器问题非常有用。
2(我还使用了"dataReceived"和"connectionLost"或"connectionMade"等方法,如何使用PB获得此方法的相同功能?
如您所见,我想首先使用 PB 模型而不是工厂重写代码。我看过示例,但与工厂的示例不同,我无法理解它们。
提前感谢任何帮助=(
PBClientFactory
是一个ClientFactory
,所以你仍然会收到clientConnectionFailed
和clientConnectionLost
调用它。 如果需要,可以进行子类和覆盖。 您还可以使用 notifyOnDisconnect
方法,该方法由 Broker
(与 PB 一起使用的协议类(和 RemoteReference
实现,在使用 PB 时,您通常会有实例。
如果需要,您仍然可以覆盖协议上的connectionMade
和connectionLost
。 正如我所提到的,协议是 Broker
. 子类化,覆盖一些方法,并将子类(类,而不是实例(设置为PBClientFactory
上的protocol
属性。
但是,您不应覆盖Broker.dataReceived
。 PB 不是有序、可靠、面向流的字节传输。 您不会等待传递一个字节块,然后使用您自己的字节块进行响应。 PB 是一种远程对象和方法调用协议。 您可以使用它通过网络调用方法并将对象传递给这些方法调用。 如果你是一个客户端,能够在你的服务器上调用方法,那么你定义remote_*
方法。
PB 文档对此进行了更详细的解释。 请参阅 http://twistedmatrix.com/documents/current/core/howto/的"透视经纪人"部分。