Веб-сокеты/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, очень хорошо описывает основную идею.