2011-05-25 17 views
10

Estoy tratando de usar un servidor de socket web Tornado para notificar a mi usuario cuando se realizan cambios en una base de datos en tiempo real. Esperaba usar sockets web HTML5 para esto, aunque la mayoría de los navegadores no los admiten. Ninguna de las demostraciones que vienen con el paquete Tornado usan conectores web y no se mencionan en la documentación, por lo que no tengo idea de cómo comenzar. Los pocos ejemplos que pude encontrar en google tampoco funcionan o están mal documentados.Sockets web/Tornado - Notificar al cliente en la actualización de la base de datos

¿Alguien tiene algún ejemplo de cómo puedo usar Tornado para enviar datos a un cliente cuando se ha actualizado una base de datos MySQL o algo similar que puedo utilizar para aprender?

Respuesta

8

Una respuesta de Lee es buena, es probable que desee socket.io si necesita admitir navegadores más antiguos.

websockets son muy fáciles de tornado sin embargo:

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" 

Entonces ruta como cualquier otro controlador, e incluyen WebSocket Javascript en sus puntos de vista:

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

Para obtener más información, ver la fuente: https://github.com/facebook/tornado/blob/master/tornado/websocket.py

6

He tenido éxito utilizando el cliente socket.io y en el extremo del servidor. Socket.IO proporciona una abstracción sobre websockets y proporciona retrocesos si el navegador no admite websockets (sondeo largo, socket flash, etc.).

Para usarlo, solo necesita escribir un script tornadio al la documentación de tornadio que monitorea su base de datos y luego incluir el JavaScript socket.io en sus páginas web y hacer que establezca una conexión donde su servidor tornadio resida en la URL route que especificó en su script tornadio.

Cuestiones relacionadas