【问题标题】:Twisted PerspectiveBroker/ServerFactory QuestionsTwisted PerspectiveBroker/ServerFactory 问题
【发布时间】:2011-07-29 23:39:30
【问题描述】:

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

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

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

如您所见,我想首先使用 PB 模型而不是工厂重写我的代码。 我看过示例,但与工厂的示例不同,我无法理解它们。

在此先感谢您的帮助 =)

【问题讨论】:

    标签: python twisted factory perspective broker


    【解决方案1】:

    PBClientFactory 是一个ClientFactory,所以你仍然会得到clientConnectionFailedclientConnectionLost 调用它。如果需要,子类化和覆盖。您还可以使用notifyOnDisconnect 方法,该方法由Broker(与PB 一起使用的协议类)和RemoteReference 实现,在使用PB 时您经常会遇到这种情况。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多