我目前正在使用两端都装有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方法,这将是解决此问题的好方法,还是我应该将所有程序逻辑都填充到客户端中?本身?

  ask by ImDoinItWrongAgain translate from so

本文未有回复,本站智能推荐:

1回复

如何使用Twisted Trial对Autobahn应用程序进行单元测试?

假设您只使用Autobahn连接(不是原始WebSocket)。 我们如何在没有网络,RPC方法和事件的情况下进行测试? 由于它是Twisted,我认为最合适的工具是Twisted Trial。 但我无法弄清楚如何编写这些测试,而不需要编写大量的样板代码并重新使用Autobahn
2回复

高速公路websocket

我正在评估和构建一个带有autobahn websocket的简单websocket服务器 有没有人使用子类WrappingWebSocketServerProtocol ,是否有使用此实现的任何示例? 与WebSocketServerProtocol相比有什么好处以及要覆盖/实现的子方
2回复

如何在高速公路中设置组件角色

我正在使用交叉开关0.11.1,并且我想让高速公路组件使用特定的角色。 当我向组件添加“角色”属性时,如下所示: 运行crossbar start时出现此错误
1回复

带有.NET路由器(WampSharp)的高速公路组件

目前,我正在使用WAMP原型,我很好奇这样的事情是否可行,因为我无法使其正常工作: 1,用C#编写WAMP路由器(WampSharp): 2.具有用python编写的组件: 当我运行python脚本时,出现错误: 按照http://autobahn.ws/pytho
1回复

如何从高速公路python脚本中删除此错误?

我在下面的链接中关注有关高速公路python的教程; https://github.com/tavendo/AutobahnPython/blob/master/examples/twisted/wamp/app/calculator/calculator.py 导致错误的代码如下;
1回复

如何在使用Autobahn Python和Twisted ReconnectingClientFactory重新连接后重新注册WAMP被调用者?

我有一个使用Twisted的Autobahn Python客户端应用程序,它连接到Crossbar.io服务器。 使用ReconnectingClientFactory丢失网络连接后,客户端应用程序可以成功重新连接。 客户端在连接时注册被叫方名称,以便其他应用程序可以调用它。 这始终适用于
4回复

使用tac文件使用twistd运行时的高速公路websocket问题

我有一个使用autobahn WebSocket框架使用twisted实现的WebSocket服务器。 当程序使用python运行时,WebSocket服务器运行正常。 但是,如果我通过创建tac文件作为扭曲服务使用twistd服务器运行程序运行它,我在服务器中得到以下错误,而任何客户端尝试
1回复

如何在android高速公路websocket中增加帧有效载荷大小

我正在使用android autobahn websocket在android和python龙卷风套接字服务器之间建立连接。 以下是在android中使用的高速公路Websocket代码。 public void start(){ 所有消息都以public void onTe
1回复

所有HTTP标头键在Autobahn websocket服务器的ConnectionRequest.headers中均以小写形式出现

为什么高速公路Web套接字服务器将所有http标头密钥更改为小写? 我需要在OAuth2标准的标头中实现身份验证令牌,并使用自定义标头'Authorization:Bearer $ token'。 但是从WebSocketServerProtocol类的onConnect方法中的autoba
1回复

Redis操作阻止高速公路Web套接字服务器请求

我正在根据我从服务器客户端收到的消息,使用redis为我的Web套接字服务器保存/更新/删除数据(使用高速公路-基于扭曲的Web套接字实现实现)。 对于Redis操作,我使用redis-py软件包。 当有更多并发客户端连接到我的服务器时,我可以看到请求以同步方式服务。 我发现redis操作