2012-02-21 18 views
5

Estoy trabajando en un proyecto de tarea para una clase de Networking donde tenemos que construir un simple servidor de chat basado en web en C/C++ o Python. Elegí Python porque pensé que sería un lenguaje más fácil para implementar el proyecto. Podemos utilizar cualquier material que encontremos en la web, ya que es muy probable que no tenga toda la funcionalidad que requiere el proyecto. De hecho, el profesor realmente nos animó a utilizar material de la web, incluidos tutoriales. No nos está probando en nuestra capacidad para codificar, más bien en nuestra capacidad para implementar código de red, y si comprendemos completamente los procesos involucrados.Un tutorial para un servidor de chat basado en web en Python

El proyecto debe manejar múltiples clientes, y debe ser capaz de admitir múltiples navegadores, Chrome, Firefox, etc. Un usuario necesita poder ingresar una Dirección IP y un Puerto en el navegador para conectarse. Simplemente no puedo encontrar ningún material con el que trabajar. He encontrado un poco en C pero nada en Python.

¿Alguien sabe de algún tutorial completo por ahí? Hay muchos chats basados ​​en comandos cliente/servidor, pero no hay chats basados ​​en navegador.

Respuesta

3

Puede consultar usando TornadIO. Es una implementación de Python de Socket.io, para Tornado, Tornado es un servidor web de pitón controlado por eventos.

https://github.com/MrJoes/tornadio2

http://www.tornadoweb.org/

Socket.io es una solución multi-navegador a la toma de conexiones/sockets como desde el cliente web al servidor. Esto prácticamente le dará todas las herramientas que necesita para hacer un servidor de chat, ya que admite suscripciones y mensajes de sub-pub. Lo bueno de usar socket.io para sus propósitos es que intenta una serie de transportes para garantizar que todos los navegadores nuevos y antiguos puedan comunicarse: Websocket, Flashsocket, xhr polling, jsonp, htmlfile. Todos son intentados y utilizados de una manera que se ve igual para el cliente.

Tornadio2 es la versión más nueva que es compatible con el nuevo Socket.io 0.7+. Esta versión agregó muchas características que rompieron compatibilidad con 0.6. Sin embargo, el TornadIO original contiene un ejemplo sala de chat que se podría revisar y traducir con bastante facilidad a la versión más reciente para empezar:

https://github.com/MrJoes/tornadio/tree/master/examples/chatroom

+0

@jdi Sé que esta es una publicación un tanto antigua, pero sin embargo: ¿Cuáles son sus pensamientos sobre cómo uno podría almacenar mensajes añadidos a una base de datos usando este 'tornadoio'? ¿Tendría que incorporar el módulo de subprocesamiento o multiprocesamiento y tener múltiples procesos, uno para el chat, otro para la consulta de DB? ¿O hay una forma más suave de hacer esto que ves? – JohnZ

+0

@JohnZ: Simplemente diría ir por la ruta de tener un worker hilo bloqueado en un 'queue.get' y cuando recibe un mensaje lo agregará a la base de datos. De esa forma, puede lanzar un mensaje en la cola desde otro hilo y no bloquear nada. – jdi

1

Por lo que yo puedo entender, el trabajo a domicilio dado es dejar que la gente llega actividad práctica con la programación network. Así que podría echar un vistazo a www.twistedmatrix.com, pocos casos ejemplo el uso de trenzado
Chat comet site using python and twisted,
http://lists.canonical.org/pipermail/kragen-hacks/2005-April/000409.html,
http://code.google.com/p/twisted-chat-example/.

Este utiliza la programación de socket simple http://code.activestate.com/recipes/531824-chat-server-client-using-selectselect/,
http://ankurs.com/2008/05/creating-a-simple-chat-application-with-python/.

Éste se basa en gevent.

Para la emulación de sala de chat simple sin el uso de la programación de socket, este es el ejemplo gummi.

Un caso de uso real en sourceforge.

Cuestiones relacionadas