Веб-сокеты/Tornado - уведомление клиента о обновлении базы данных

Я пытаюсь использовать сервер веб-сокетов Tornado для уведомления моего пользователя, когда изменения вносятся в базу данных в реальном времени. Я надеялся использовать для этого веб-сокеты HTML5, хотя большинство браузеров их не поддерживают. Ни одна из демонстраций, которые поставляются с пакетом Tornado, не использует веб-сокеты, и они не упоминаются в документации, поэтому я не знаю, как начать работу. Несколько примеров, которые я мог найти в google, либо не работают, либо плохо документированы.

Есть ли у кого-нибудь примеры того, как я могу использовать Tornado для передачи данных клиенту при обновлении базы данных MySQL или что-то подобное, что я могу использовать для изучения?

Ответ 1

Ответ Ли хороший, вы, вероятно, хотите socket.io, если вам нужно поддерживать старые браузеры.

В торнадо очень удобны веб-сайты:

import tornado.websocket

  class EchoWebSocket(tornado.websocket.WebSocketHandler):
      def open(self):
          print "WebSocket opened"

      def on_message(self, message):
          self.write_message(u"You said: " + message)

      def on_close(self):
          print "WebSocket closed"

Затем проложите его как любой другой обработчик и включите Javascript Websocket в свои представления:

  var ws = new WebSocket("ws://localhost:8888/websocket");
  ws.onopen = function() {
     ws.send("Hello, world");
  };
  ws.onmessage = function (evt) {
     alert(evt.data);
  };

Для получения дополнительной информации см. источник: https://github.com/facebook/tornado/blob/master/tornado/websocket.py

Ответ 2

У меня был успех с помощью socket.io клиента и tornadio на сервере, Socket.IO обеспечивает абстракцию над веб-окнами и предоставляет резервные копии, если веб-порты не поддерживаются браузером (длинный опрос, флэш-сокет и т.д.).

Для его использования вам просто нужно написать tornadio script a la the tornadio документацию, которая отслеживает вашу базу данных, а затем включает в себя сокет .io JavaScript на ваших веб-страницах и установить соединение с вашим сервером торнадо. находится в URL route, указанном в вашем tornadio script.

Ответ 3

Этот пост, используя websockets и redis, очень хорошо описывает основную идею.