title: How to send a message from the server to the client in a web socket
body: <p>Well I'm doing a little program that aims to receive messages on rabbitmq and send to clients connected to the websocket that has the same index, but having a problem when sending to the client, I reused a code that had to work in 3.6 .9 and I don't remember the version of the tornado (websocket library that I use) but I changed the pc and I'm able to install it again, now I have the newest versions of the library and python.</p>
  <p>I'll post my old code because it's easier to understand because of the msm error</p>
  <pre><code>import tornado.websocket
  import tornado.ioloop
  import threading
  import pika
  import json
  
  def verificar_novo(se):
      for i in range(0,len(conexao_lista)):
          if se == conexao_lista[i][&quot;endereco&quot;]:
              return 0
      return 1
  
  def excluir_conexao(endereco):
      for i in range(0,len(conexao_lista)):
          if conexao_lista[i][&quot;endereco&quot;] == endereco:
              del(conexao_lista[i])
              break
  
  &quot;&quot;&quot; Função para procurar mensagens no rabbit e retornar para os clientes&quot;&quot;&quot;
  def callback(ch, method, properties, body):
      menssagem_rabbit = json.loads(body)
      threading.Lock()
      for i in range(0, len(conexao_lista)):
          if (conexao_lista[i][&quot;configuracao&quot;][&quot;ras_eve_id_indice&quot;]) == (menssagem_rabbit[&quot;ras_eve_id_indice&quot;]):
              conexao_lista[i][&quot;endereco&quot;].write_message(menssagem_rabbit)
              break
      threading.RLock()
  
  
  
  &quot;&quot;&quot; Classe de conexao com cliente&quot;&quot;&quot;
  class WebSocketHandler(tornado.websocket.WebSocketHandler):
      def open(self):
          print(&quot;Novo cliente conectado&quot;)
  
  
      def on_close(self):
          print(&quot;Cliente desconectado&quot;)
          excluir_conexao(self)
  
      def on_message(self, message):
  
          n = verificar_novo(self)
          if n == 0:
              self.write_message(u&quot;Sua menssagem: &quot; + message)
          else:
              dados_json = json.loads(message)
              conexao_dicionario[&quot;endereco&quot;] = self
              conexao_dicionario[&quot;configuracao&quot;] = dados_json
              conexao_lista.append(conexao_dicionario.copy())
              self.write_message(u&quot;Usuario conectado &quot; + dados_json[&quot;id_usuario&quot;])
  
  
      def check_origin(self, origin):
          return True
  
  &quot;&quot;&quot;Função que a thread ficara rodando para consumir as mensagem em segundo plano&quot;&quot;&quot;
  def procurar_mensagens():
      connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
      channel = connection.channel()
      channel.basic_consume(queue='testerenan', on_message_callback=callback, auto_ack=True)
      channel.start_consuming()
  
  &quot;&quot;&quot;Variaveis&quot;&quot;&quot;
  conexao_lista = []
  conexao_dicionario = {&quot;endereco&quot;: &quot;&quot;,&quot;configuracao&quot;:&quot;&quot;}
  
  
  &quot;&quot;&quot;Chamando a Thread&quot;&quot;&quot;
  threading.Thread(target=procurar_mensagens, args=()).start()
  
  &quot;&quot;&quot;Conexão do WebSocket&quot;&quot;&quot;
  application = tornado.web.Application([(r&quot;/&quot;, WebSocketHandler),])
  
  
  if __name__ == &quot;__main__&quot;:
      application.listen(8888)
      tornado.ioloop.IOLoop.instance().start()
  </code></pre>
  <p>The error that appears:</p>
  <pre><code>Exception in thread Thread-1: 
  Traceback (most recent call last):
    File &quot;/usr/lib/python3.8/threading.py&quot;, line 932, in _bootstrap_inner
      self.run() 
    File &quot;/usr/lib/python3.8/threading.py&quot;, line 870, in run
      self._target(*self._args, **self._kwargs) 
    File &quot;/home/renan/Área de Trabalho/Projeto-WebSocket/Servidor.py&quot;, line 63, in procurar_mensagens
      channel.start_consuming()
    File &quot;/usr/local/lib/python3.8/dist-packages/pika/adapters/blocking_connection.py&quot;, line 1866, in start_consuming
      self._process_data_events(time_limit=None) 
    File &quot;/usr/local/lib/python3.8/dist-packages/pika/adapters/blocking_connection.py&quot;, line 2027, in _process_data_events
      self.connection.process_data_events(time_limit=time_limit)
    File &quot;/usr/local/lib/python3.8/dist-packages/pika/adapters/blocking_connection.py&quot;, line 834, in process_data_events
      self._dispatch_channel_events()
    File &quot;/usr/local/lib/python3.8/dist-packages/pika/adapters/blocking_connection.py&quot;, line 566, in _dispatch_channel_events
      impl_channel._get_cookie()._dispatch_events() 
    File &quot;/usr/local/lib/python3.8/dist-packages/pika/adapters/blocking_connection.py&quot;, line 1493, in _dispatch_events
      consumer_info.on_message_callback(self, evt.method, 
    File &quot;/home/renan/Área de Trabalho/Projeto-WebSocket/Servidor.py&quot;, line 26, in callback
      conexao_lista[i][&quot;endereco&quot;].write_message(menssagem_rabbit) 
    File &quot;/home/renan/.local/lib/python3.8/site-packages/tornado/websocket.py&quot;, line 342, in write_message
      return self.ws_connection.write_message(message, binary=binary)
    File &quot;/home/renan/.local/lib/python3.8/site-packages/tornado/websocket.py&quot;, line 1098, in write_message
      fut = self._write_frame(True, opcode, message, flags=flags) 
    File &quot;/home/renan/.local/lib/python3.8/site-packages/tornado/websocket.py&quot;, line 1075, in _write_frame
      return self.stream.write(frame)
    File &quot;/home/renan/.local/lib/python3.8/site-packages/tornado/iostream.py&quot;, line 555, in write
      future = Future() # type: Future[None] 
    File &quot;/usr/lib/python3.8/asyncio/events.py&quot;, line 639, in get_event_loop
      raise RuntimeError('There is no current event loop in thread %r.' 
  RuntimeError: There is no current event loop in thread 'Thread-1'.
  </code></pre>
  <p>I'll leave the project for download if anyone wants to take a look:
  <a href="https://github.com/Renan-Sacca/Projeto-WebSocket" rel="nofollow noreferrer">https://github.com/Renan-Sacca/Projeto-WebSocket</a></p>