2

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

メイン スレッドとその中で作成した websocket の間でキューを共有する方法はありますか?

4

2 に答える 2

1

誰かがそれを必要とする場合に備えて、私もこのアプローチを試してみましたが、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)
于 2013-12-23T14:48:51.683 に答える