我希望重写我的WebSocketClientFactory类,以允许传入数据填充作业队列。这是我正在尝试的连接代码
factory = WebSocketClientFactory("ws://localhost:7096")
job_queue = Queue.Queue()
factory.protocol = BridgeSocket(job_queue)
connectWS(factory)这是我的套接字类:
class BridgeSocket(WebSocketClientProtocol):
def __init__(self,producer_queue):
self.producer_queue = producer_queue
def sendHello(self):
self.sendMessage("hello")
def onOpen(self):
self.sendHello()
.....不管怎么说我都错了
exceptions.AttributeError: BridgeSocket instance has no __call__ method有没有办法在我的主线程和我在其中创建的websockets之间共享队列。
发布于 2013-12-23 11:04:24
一种选择是去做
factory = WebSocketClientFactory("ws://localhost:7096")
factory.job_queue = Queue.Queue()
factory.protocol = BridgeSocket然后从协议中访问共享队列,如下所示
class BridgeSocket(WebSocketClientProtocol):
def onMessage(self, payload, isBinary):
self.factory.job_queue.put(payload)*西德诺特:你用的是来自GitHub的AutobahnPython中继吗?您应该使用标记版本或来自PyPI (0.6.5).*的最新版本
发布于 2013-12-23 14:48:51
如果有人需要,我也尝试过这种方法,但oberstet的解决方案看起来非常优雅和高效。
class BridgeSocket(WebSocketClientProtocol):
def __init__(self,factory,job_queue):
self.job_queue = job_queue
self.factory=factory
class BridgeSocketClientFactory(WebSocketClientFactory):
def __init__(self,url,job_queue):
WebSocketClientFactory.__init__(self,url)
self.job_queue = job_queue
def buildProtocol(self, addr):
return BridgeSocket(self,self.job_queue)
factory = BridgeSocketClientFactory("ws://localhost:7096",job_queue)
connectWS(factory)https://stackoverflow.com/questions/20740987
复制相似问题