私は現在、両端に Python の autobahn (asyncio) フレームワークを使用して、クライアント サーバー型のアプリケーションを構築しています。サーバー自体とデータベース管理モジュールで構成されるサーバーの基本的なセットアップは既に完了しています。クライアントの場合、ネットワークを別のモジュールに入れたいので<networkingModule>.sendMessage("msg")
、たとえば呼び出すことができます。それはそれを行う良い方法ですか?しかし、私の問題は、クライアントを初期化するために使用されるコードが、実際に動作するオブジェクトを提供しないことです。
import asyncio
factory = WebSocketClientFactory("ws://localhost:9000", debug = False)
factory.protocol = <ClientProtocolName>
loop = asyncio.get_event_loop()
coro = loop.create_connection(factory, '127.0.0.1', 9000)
loop.run_until_complete(coro)
loop.run_forever()
loop.close()
クラス自体は次のとおりです。
class <ClientProtocolName>(WebSocketClientProtocol):
def onConnect(self, response):
print("Server connected: {0}".format(response.peer))
def onOpen(self):
print("WebSocket connection open.")
self.sendInput()
def _sendMessage(self, msg):
self.sendMessage(bytes(msg, "utf-8"))
def onMessage(self, payload, isBinary):
if isBinary:
print("Binary message received: {0} bytes".format(len(payload)))
else:
print("Text message received: {0}".format(payload.decode('utf8')))
def onClose(self, wasClean, code, reason):
print("WebSocket connection closed: {0}".format(reason))
したがって、私の質問は次のとおりです。外部からsendMessageメソッドにアクセスできるように「ネットワーキングモジュール」を構築する方法はありますか?それはこの問題に対処する良い方法でしょうか、それともすべてのプログラムロジックをクライアントに詰め込むべきですか?自体?