docs: def on_message(self, msg):
          '''
          Called when client sends a message.
  
          Supports a python debugging console. This forms
          the "eval" part of a standard read-eval-print loop.
  
          Currently the only implementation of the python
          console is in the WebUI but the implementation
          of a terminal based console is planned.
          '''
  
          msg = json.loads(msg)
  
          psession = self.funcserver.pysessions.get(self.pysession_id, None)
          if psession is None:
              interpreter = PyInterpreter(self.funcserver.define_python_namespace())
              psession = dict(interpreter=interpreter, socks=set([self.id]))
              self.funcserver.pysessions[self.pysession_id] = psession
          else:
              interpreter = psession['interpreter']
              psession['socks'].add(self.id)
  
          code = msg['code']
          msg_id = msg['id']
  
          stdout = sys.stdout
          try:
              sys.stdout = cStringIO.StringIO()
              interpreter.runsource(code)
              output = sys.stdout.getvalue() or interpreter.output
              if isinstance(output, list): output = ''.join(output)
              interpreter.output = []
          finally:
              sys.stdout = stdout
  
          msg = {'type': MSG_TYPE_CONSOLE, 'id': msg_id, 'data': output}
          self.send_message(msg)