0

次のコードで autobhan websockets ライブラリを使用しています。

    from twisted.internet import reactor
    from autobahn.websocket import WebSocketServerFactory, \
                                   WebSocketServerProtocol, \
                                   listenWS


    class EchoServerProtocol(WebSocketServerProtocol):

       def onMessage(self, msg, binary):
          self.sendMessage(msg, binary)

       def sendRandomMessage(message):
          self.sendMessage(message,true)


    if __name__ == '__main__':

       factory = WebSocketServerFactory("ws://192.168.1.135:9999", debug = False)
       factory.protocol = EchoServerProtocol
       listenWS(factory)
       reactor.run()

       #insert random code here.  Things happen independent of the connection state.
       #somehow access EchoServerProtocolINSTANCE.sendMessage("MESSAGE_HERE")

このコードはメッセージの受信には適していますが、いつでも任意のメッセージを送信するために EchoServerProtocol のインスタンスにアクセスするにはどうすればよいでしょうか?

4

1 に答える 1

2

1 つの方法は、プロトコル インスタンスをファクトリに登録し、アプリの残りの部分からファクトリを介して通信することです。

次に例を示します。

https://github.com/tavendo/AutobahnPython/blob/master/examples/websocket/broadcast/server.py#L34

この例では、WebSocket セッションが確立された後、すべてのプロトコル インスタンスがファクトリに登録されます。その後、ファクトリを介して、現在接続されているすべてのプロトコル インスタンスにメッセージをブロードキャストできます。

于 2012-10-30T07:07:22.130 に答える