1

我目前正在构建一个两端都带有 Pythons 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 方法,这是解决这个问题的好方法,还是我应该把我所有的程序逻辑都塞进客户端本身?

4

0 回答 0