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

一种方法是向工厂注册您的协议实例,并通过工厂与您的应用程序的其余部分进行通信。

这是一个例子:

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

在这个例子中,每个协议实例都会在 WebSocket 会话建立后在工厂中注册自己。然后,您可以通过工厂向所有当前连接的协议实例广播消息。

于 2012-10-30T07:07:22.130 回答