[Python-es] Como conectar multiples clientes usando el motor sockjs-tornado
Diego Uribe Gamez
diego.uribe.gamez en gmail.com
Vie Nov 16 21:23:39 CET 2012
Lo que pasa es que el servidor funciona como un router para tu dirección
web:
SockJSRouter(ConnectionHandler, r"/websocket")
y esta remplaza la entrada de apache a tu carpeta *websocket*, entones
cuando intentas navegar a esta ruta ya de por si el servidor.py tiene
sobrescrita la carpeta, para probar coloca el server y el cliente uno junto
al otro en una ruta o carpeta diferente a la que tienes, puedes llamarla
html5 o algo así.
Como comentaste el servidor esta bien probando lo como dijiste, no
lo pensé y por otra parte ya logre conectar el html:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<script src="http://cdn.sockjs.org/sockjs-0.3.min.js"></script>
<script>
conn = new SockJS('http://localhost:8888/websocket');
</script>
<body>
</body>
</html>
lo que paso es que mi servidor estaba abriendo ('http://' +
window.location.host + '/websocket') en localhost:8080 que es como
configure mi servidor local, entonces la variable de javascript estaba mal
configurada y no estaba abriendo el socket en la dirección correcta
localhost:8888, ya así lo hace y en terminal muestra que se dio la nueva
conexión.
Lo que sigue es mandar mensajes desde el navegador al servidor y viceversa
mas adelante miro esto pero ya tengo de donde trabajar, si tengo adelantos
les mando.
Saludos.
El 16 de noviembre de 2012 13:28, Juan M. Puertas
<soft.sirius en gmail.com>escribió:
> Hola Diego. Hola Miguel.
> He probado tu primer ejemplo, utilizando como servidor el "servidor.py"
> de tu mensaje. Como cliente, el html correspondiente.
> "servidor.py" lo he puesto en una carpeta llamada www, y el cliente lo
> he puesto en la carpeta "www/websocket".
> Estoy utilizando Ubuntu Mint Mate. Hago correr servidor.py, y luego, en
> el navegador de Firefox 16, en "http://localhost:8888/websocket". un
> mensaje en el navegador indica: "Welcome to SockJS!" así vemos que el
> servidor funciona bien.
> Luego, intento navegar en "http://localhost:8888/websocket/cliente.html",
> pero obtengo: "*404: Not Found*". Y en consola: *WARNING:root:404 GET /**
> websocket/cliente.html (127.0.0.1) 0.52ms*
> ¿Por qué será?
>
> Insisto; con Sajax consigo enviar y recibir partámetros, sean o no sean
> procedentes de un formulario.
> En realidad, como comentaba hace unos días, este es el futuro que va a
> unificar los GUI y el lenguaje gráfico de Python y de todos los
> lenguajes: HTML5.
>
> Saludos desde las cercanías de la Alhambra :-)
>
>
> El 16 de noviembre de 2012 12:32, Diego Uribe Gamez <
> diego.uribe.gamez en gmail.com> escribió:
>
> Bueno Juan, te comento que yo si tengo un ejemplo funcional, pero con esto
>> lo que quiero es estabilidad de alto nivel, y la idea con este correo es
>> poder colocar un codigo que funcione perfectamente para este propósito y
>> que le funcione a cualquiera que lo encuentre, este codigo esta enfocado
>> para que lo pueda adaptar a un MVC o a un MVT como es Django, o a cualquier
>> codigo que se tenga a la mano, pero igual que tu y como yo no encuentro
>> contenido en mi idioma, la mayoría de contenido esta en ingles y pues yo
>> como buen hispano me dirijo a la lista de correo que me corresponde
>> buscando completar esto con personas que tienen mas experiencia que yo.
>>
>> En principio es abrir una conexión, luego serán los mensajes para todos y
>> por ultimo mensajes individuales discriminando usuarios y entre usuarios,
>> no se trata solo de un chat, tambien se trata de actualizar contenido
>> dinamico directamente desde la escritura de la base de datos, como escribí
>> en el primer correo, lo que yo voy a hacer es que si me puedes ayudar a
>> echar andar este codigo, lo que yo haga mas adelante lo publicare aquí, de
>> la misma forma que si tu encuentras algo nos ayudaría con tus
>> publicaciones, la meta es una y el codigo tambien, si tienes alguna
>> pregunta de este y crees que se puede mejorar de otra forma, pues
>> hablemoslo y hagamos esto una realidad, pero el enfoque es este y este
>> codigo tambien, para que todos lo vean y a todos le sirva.
>>
>> Gracias por tu comentario, espero otros se animen a continuar con
>> nosotros, podríamos pasar a ser muchos.
>>
>> El jueves, 15 de noviembre de 2012, Juan M. Puertas escribió:
>>
>> Hola Diego y a todo el mundo.
>>> En este momento me hallo en la misma búsqueda que tú. No he conseguido
>>> que a lo largo y ancho de Google me funcione un sólo programa-ejemplo de
>>> Websockets, lo que puede ser normal para un python-aficionado como yo ;-)
>>> De momento seguiré con la opción más fácil que he encontrado para estas
>>> cuestiones; Sajax, yo lo estoy utilizando en un simple CGI, y las pruebas
>>> que he hecho no están nada mal. Lo más pesado es la depuración del código,
>>> lo que he resuelto duplicándolo. Por una parte tengo el CGI en python, y
>>> por otra un programa copia del anterior con la salvedad de que en lugar de
>>> tomar los datos que tengo en el formulario CGI, ya los incorpora tal y como
>>> llegarían del citado formulario en HTML.
>>> Estaré muy atento a tus progresos y a que exista alguien en este foro
>>> que ya lo haya conseguido.
>>> Saludos :-)
>>>
>>>
>>>
>>> El 15 de noviembre de 2012 23:44, Diego Uribe Gamez <
>>> diego.uribe.gamez en gmail.com> escribió:
>>>
>>>> Hola, les comento: mas que un problema es un desarrollo y la idea es
>>>> lograr comunicar al servidor usando python con el navegador de forma
>>>> asícrona, lograr mandar un datos del servidor a muchos clientes, como a
>>>> un único cliente especifico según su necesidad y también de un cliente a
>>>> otro cliente como un chat uno a uno.
>>>>
>>>> Pues en mi camino a realizar este desarrollo
>>>> me encontré con tecnologías bastante buenas siempre inclinándome a python,
>>>> pero también esta el tema del navegador donde encontré otras tecnologías
>>>> en conclusión y después de tanto buscar me encontré con este articulo: A
>>>> Modern Python Stack for a Real-time Web Application<http://blog.y3xz.com/blog/2012/06/08/a-modern-python-stack-for-a-real-time-web-application/>
>>>>
>>>> Aquí el autor comento las diferentes tecnologías que encontró muy
>>>> parecido a mi propia búsqueda y mostró donde y como iniciar este trabajo.
>>>>
>>>> Pero como mi ingles es un poco corto no logro hacer esto, es por eso
>>>> que acudo aquí para ver si se animan a documentarlo por este medio y me
>>>> ayudar a crear una app que para muchos es un tabu, un motor para una pagina
>>>> que le permita actualizar contenido en vivo y en directo para cualquier
>>>> persona en cualquier escenario.
>>>>
>>>> Instalar lo necesario:
>>>> pip install tornado
>>>> pip install sockjs-tornado
>>>>
>>>> 1) Conectarme al servidor
>>>> Aquí intento conectarme al servidor desde el navegador e imprimir en
>>>> terminal 'nueva conexión' sin resultado.
>>>>
>>>> servidor.py
>>>> -----------------------------------------------------
>>>>
>>>> # -*- coding: utf-8 -*-
>>>> from sockjs.tornado import SockJSRouter, SockJSConnection
>>>>
>>>> from tornado import web, ioloop
>>>>
>>>> class ConnectionHandler(SockJSConnection):
>>>>
>>>> def on_open(self, info):
>>>> print 'new connection'
>>>>
>>>> if __name__ == "__main__":
>>>> onopen = SockJSRouter(ConnectionHandler, r"/websocket")
>>>>
>>>> application = web.Application(onopen.urls)
>>>>
>>>> application.listen(8888)
>>>> ioloop.IOLoop.instance().start()
>>>>
>>>> inicio.html
>>>> -----------------------------------------------------
>>>>
>>>> <!DOCTYPE html>
>>>> <html>
>>>> <head>
>>>> <title></title>
>>>> </head>
>>>> <script src="http://cdn.sockjs.org/sockjs-0.3.min.js"></script>
>>>> <script>
>>>> conn = new SockJS('http://' + window.location.host +
>>>> '/websocket');
>>>> </script>
>>>> <body>
>>>> </body>
>>>> </html>
>>>>
>>>> La idea aquí es simplemente que cuando abra la nueva conexión desde
>>>> el navegador este me imprima en termina que se logro, sin resultado, saben
>>>> que me falta?
>>>>
>>>> Gracias.
>>>>
>>>> --
>>>> *Diego Alonso Uribe Gamez*
>>>> ------------------------------
>>>>
>>>> *Desarrollador web*
>>>>
>>>> Twitter: @DiegoUG <http://www.twitter.com/DiegoUG>
>>>>
>>>> Google+: http://gplus.to/diegoug
>>>> ------------------------------
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Python-es mailing list
>>>> Python-es en python.org
>>>> http://mail.python.org/mailman/listinfo/python-es
>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>
>>>>
>>>
>>>
>>> --
>>> *Nota: Por problemas con el e-mail. Puede que recibas de nuevo este
>>> mensaje en un tiempo.*
>>>
>>
>>
>> --
>> iPad
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> http://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
>
> --
> *Nota: Por problemas con el e-mail. Puede que recibas de nuevo este
> mensaje en un tiempo.*
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
--
*Diego Alonso Uribe Gamez*
------------------------------
*Desarrollador web*
Twitter: @DiegoUG <http://www.twitter.com/DiegoUG>
Google+: http://gplus.to/diegoug
------------------------------
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20121116/99b52506/attachment.html>
Más información sobre la lista de distribución Python-es