我有一个twisted websocket客户机协议,在这个reactor循环中还有另一个socket服务器 如何从套接字服务器访问sendMessage方法? 我看到了这个link,但我不知道该怎么办。我试过了,但是我发现了一些错误:
reactor.callFromThread(WebSocketClientProtocol.sendMessage, protocol, 'data')
exceptions.TypeError: unbound method sendMessage() must be called with WebSocketClientProtocol instance as first argument (got module instance instead)
我的websocket客户端:
^{pr2}$我用这个代码来解决这个问题:
class WebSocketProtocol(WebSocketClientProtocol):
def onOpen(self):
self.factory.data = []
self.factory.data.append(self)
reactor.callFromThread(WebSocketClientProtocol.sendMessage, websocket_factory.data[0], send)
callFromThread
仅在程序中有多个线程时使用。仅仅因为你有多个服务器并不意味着你有多个线程。事实上,Twisted主要面向运行多个服务器(和/或客户机),而不使用任何额外的线程。在但是,您遇到的具体错误是关于如何在实例上调用实例方法。在
WebSocketClientProtocol
是一个类,WebSocketClientProtocol.sendMessage
是一个未绑定的方法。这就像试图写:这并不比您尝试的更好,因为您当然需要一个实例:
^{pr2}$相关问题 更多 >
编程相关推荐