Веб-сокеты / Tornado - Уведомить клиента об обновлении базы данных - PullRequest
10 голосов
/ 26 мая 2011

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

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

Ответы [ 3 ]

8 голосов
/ 26 мая 2011

Ответ Ли - хороший, вам, вероятно, понадобится 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"

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

  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

6 голосов
/ 26 мая 2011

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

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

1 голос
/ 26 мая 2011

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

...