title: Exiting Python Program after closing connection in Twisted
body: <p>So I have this little side project which uses websockets in python from autobahn twisted. The connection between client and server and data transfer works perfectly but I'm having trouble gracefully exiting the program after the TCP connection closes. Hers is the code : </p>
  
  <pre><code>class MyClientProtocol(WebSocketClientProtocol):
  
      def onConnect(self, response):
          print("Server connected: {0}".format(response.peer))
  
      def onOpen(self):
          print("WebSocket connection open.")
  
          def hello():
              from twisted.internet import reactor
              self.sendMessage(u"Hello, world!".encode('utf8'))
              self.sendMessage(b"\x00\x01\x03\x04", isBinary=True)
  
              #self.factory.reactor.callLater(1, hello)
              #self.reactor.callFromThread(reactor.stop)
              #reactor.callFromThread(reactor.stop)
              #self.factory.reactor.callFromThread(reactor.stop)
          # start sending messages every second ..
          hello()
          return
  
      def onMessage(self, payload, isBinary):
          if isBinary:
              print("Binary message received: {0} bytes".format(len(payload)))
          else:
              print("Text message received: {0}".format(payload.decode('utf8')))
  
      def onClose(self, wasClean, code, reason):
          print("WebSocket connection closed: {0}".format(reason))
  
  
  def WebCon():
      import sys
  
      from twisted.python import log
      from twisted.internet import reactor
  
      log.startLogging(sys.stdout)
  
      factory = WebSocketClientFactory("ws://localhost:8080", debug=False)
      factory.protocol = MyClientProtocol
  
      reactor.connectTCP("127.0.0.1", 8080, factory)
  
      reactor.run()
      reactor.stop()
      print("Should exit")
      return
  </code></pre>