Twisted PerspectiveBroker / ServerFactory问题

时间:2011-04-05 13:29:09

标签: python twisted factory perspective broker

我正试着玩扭曲。我已经尝试使用适当的Factory创建服务器和客户端。这是一个很棒的框架,但只能发送字符串:( 我想发送一些列表或数组对象作为开始,然后可能在客户端内使用服务器中的对象。但目前我遇到了一些简单的问题:

1)在Factory模型中,我使用了诸如“clientConnectionFailed”或“clientConnectionLost”之类的方法,如何使用PB获得相同的方法?它们对于防止客户端/服务器问题非常有用。

2)我还使用了“dataReceived”和“connectionLost”或“connectionMade”等方法,如何使用PB获得此方法的相同功能?

正如您所看到的,我想首先使用PB模型而不是工厂重写我的代码。 我看过这些例子,但不像工厂的那个,我无法理解它们。

提前感谢您的任何帮助=)

1 个答案:

答案 0 :(得分:2)

PBClientFactoryClientFactory,因此您仍然会收到clientConnectionFailedclientConnectionLost次来电。子类和覆盖,如果你想。您还可以使用由notifyOnDisconnect(与PB一起使用的协议类)和Broker实现的RemoteReference方法,这种方法在使用PB时通常会有实例。< / p>

如果需要,您仍然可以覆盖协议上的connectionMadeconnectionLost。正如我所提到的,协议是Broker。对它进行子类化,覆盖一些方法,并将您的子类(类,而不是实例)设置为protocol上的PBClientFactory属性。

但是,您不应该覆盖Broker.dataReceived。 PB不是有序的,可靠的,面向流的字节传输。您不等待传递大量字节,然后使用您自己的字节块进行响应。 PB是远程对象和方法调用协议。您可以使用它通过网络调用方法并将对象传递给这些方法调用。如果您的客户端能够在您的服务器上调用方法,那么您可以定义remote_*方法。

PB文档更详细地解释了这一点。请参阅http://twistedmatrix.com/documents/current/core/howto/的“观察经纪人”部分。