2011-04-05 9 views
0

私はねじれた状態でプレイしようとしています。私はすでに適切なFactoryを使用してサーバーとクライアントを作成しようとしています。それは素晴らしいフレームワークですが、文字列だけを送信することができます:( 私はいくつかのリストまたは配列オブジェクトを開始として送信したいかもしれないし、後でクライアント内のサーバーからオブジェクトを使用することもできます。Twisted PerspectiveBroker/ServerFactoryに関する質問

1)Factoryモデルでは、「clientConnectionFailed」や「clientConnectionLost」のようなメソッドを使用しましたが、PBを使用して同じメソッドを取得するにはどうすればよいですか?クライアント/サーバーの問題を防ぐのに非常に便利でした。

2) "dataReceived"や "connectionLost"や "connectionMade"のようなメソッドも使用しましたが、PBを使用してこのメ​​ソッドの同じ機能をどのように取得できますか?

私は、工場の代わりにPBモデルを使用してコードを書き直すことから始めたいと思います。 私はexemplesを見ましたが、工場のものとは異なり、私はそれらを理解することができません。任意の助けを事前に

感謝=)

答えて

2

PBClientFactoryClientFactoryあるので、あなたはまだそれにclientConnectionFailedclientConnectionLostのコールを取得します。必要に応じて、サブクラス化してオーバーライドします。 Broker(PBで使用されるプロトコルクラス)とRemoteReferenceの両方で実装されるnotifyOnDisconnectメソッドを使用することもできます。これはPBを使用する場合によく使用されます。

必要に応じて、connectionMadeconnectionLostをプロトコルでオーバーライドすることもできます。私が言及したように、プロトコルはBrokerです。それをサブクラス化し、いくつかのメソッドをオーバーライドし、サブクラス(インスタンスではなくクラス)をPBClientFactoryの属性として設定します。

ただし、Broker.dataReceivedを上書きしないでください。 PBは、順序付けられた信頼性の高いストリーム指向のバイトトランスポートではありません。あなたは、バイトのチャンクが配信されるのを待ってから、あなた自身のバイトのチャンクで応答します。 PBはリモートオブジェクトとメソッド呼び出しプロトコルです。これを使用して、ネットワーク経由でメソッドを呼び出し、それらのメソッド呼び出しにオブジェクトを渡します。サーバー上のメソッドを呼び出すことができるクライアントの場合は、remote_*のメソッドを定義します。

PBのドキュメントでこれについて詳しく説明しています。 http://twistedmatrix.com/documents/current/core/howto/の「パースペクティブブローカー」セクションを参照してください。