Python 扭曲的透视代理/服务器工厂问题

Python 扭曲的透视代理/服务器工厂问题,python,twisted,factory,perspective,broker,Python,Twisted,Factory,Perspective,Broker,我想和twisted一起玩。我已经尝试使用适当的工厂创建服务器和客户端。这是一个很棒的框架,但只能发送字符串:( 我想先发送一些列表或数组对象,以后可能会在客户端内部使用服务器上的对象。但目前我遇到一些简单的问题: 1) 在工厂模型中,我使用了“clientConnectionFailed”或“clientConnectionLost”等方法,如何使用PB获得相同的方法?它们对于防止客户机/服务器问题非常有用 2) 我还使用了“dataReceived”和“connectionLost”或“co

我想和twisted一起玩。我已经尝试使用适当的工厂创建服务器和客户端。这是一个很棒的框架,但只能发送字符串:( 我想先发送一些列表或数组对象,以后可能会在客户端内部使用服务器上的对象。但目前我遇到一些简单的问题:

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文档对此进行了更详细的解释。请参阅的“透视代理”部分