title: Using a websocket client as a class in python
body: <p>I'm trying access some data using websockets, but I cannot really get around the examples given in the websockets documentation.</p>
  
  <p>I have this code (<a href="https://pypi.org/project/websocket_client/" rel="noreferrer">https://pypi.org/project/websocket_client/</a>) and want to transform it into a class.</p>
  
  <pre><code>import websocket
  import thread
  import time
  
  def on_message(ws, message):
      print message
  
  def on_error(ws, error):
      print error
  
  def on_close(ws):
      print "### closed ###"
  
  def on_open(ws):
      def run(*args):
          for i in range(3):
              time.sleep(1)
              ws.send("Hello %d" % i)
          time.sleep(1)
          ws.close()
          print "thread terminating..."
      thread.start_new_thread(run, ())
  
  
  if __name__ == "__main__":
      websocket.enableTrace(True)
      ws = websocket.WebSocketApp("ws://echo.websocket.org/",
                                  on_message = on_message,
                                  on_error = on_error,
                                  on_close = on_close)
      ws.on_open = on_open
  
      ws.run_forever()
  </code></pre>
  
  <p>The idea is to have this all websocket functionality in a class so that I can just create an object of that class.</p>
  
  <p>I tried to start doing it but I cannot even get passed this:</p>
  
  <pre><code>class MySocket(object):
      def __init__(self):
          websocket.enableTrace(True)
          self.ws = websocket.WebSocketApp("ws://echo.websocket.org:12300/foo",
                                      on_message = on_message,
                                      on_error = on_error,
                                      on_close = on_close)
  
      def on_message(ws, message):
          print message
  
      def on_error(ws, error):
          print error
  
      def on_close(ws):
          print "### closed ###"
  
      def on_open(ws):
      ws.send("Hello %d" % i)
  </code></pre>
  
  <p>The error starts right away in <code>on_message</code> saying that's an "unresolved reference".</p>