Me llamo José Manuel Rivas y soy
Python/Django developer en
Django se ha basado en un modelo de peticiones y respuestas
Es anunciado como proyecto oficial de Django el 9 de Septiembre de 2016
La Fundación Mozilla apoyó en diciembre de 2015 a este proyecto con $150,000
Channels añade una capa nueva que permite principalmente 2 características importantes:
Sí y no.
Video de la PyCon 2016 en Portland de parte Andrew Godwin.
Queremos que la gente tenga las nuevas entradas del blog publicadas sin refrescar la página.
El WebSocket se agrega a un grupo
# in consumers.py
def ws_connect(message):
Group("liveblog").add(message.reply_channel)
Cuando se guarda el post (save del model), enviamos el mensaje a ese grupo
class BlogPost(models.Model):
...
def save(self, *args, **kwargs):
...
Group("liveblog").send({
"text": json.dumps({"id": self.id}),
})
La gente puede enviar mensajes al chat y le llegará a todo el mundo conectado
Cuando las personas entran en un chat, se unen a un grupo.
# in consumers.py
def ws_connect(message):
Group("chat").add(message.reply_channel)
Cuando recibimos un mensaje lo enviamos al grupo
def ws_receive(message):
Group("chat").send({
"text": message["text"],
})
Y hacemos saber a Django los consumers que manejan los distintos eventos
# in routing.py
routing = [
route("websocket.connect", consumers.ws_connect),
route("websocket.receive", consumers.ws_receive),
]
La Demo consiste en una plataforma minimalista para compartir ficheros en tiempo real. Hay que tener en cuenta que la idea de esta prueba de concepto es mostrar el poder de transformar una aplicación tradicional de Django en tiempo real con sólo unas pocas líneas de código.
El código de la Demo "PatiPamiFile" está disponible en mi github