Socket Server en PHP
Written by: daniel
April 29, 2008
Hace poco necesitaba un sistema de comunicación en “tiempo real” para un proyecto no comercial que estoy haciendo y estaba curioso si se podía hacer un simple servidor de sockets en php.
Claro, el php no sea quizás el lenguaje ideal para este tipo de cosas, pero quería tener algo donde podría reutilizar fácilmente el código que ya tenía escrito, integrarlo fácilemente con el cakephp (ya escribiré otro post sobre ello) y todo, sin perder demasiado tiempo.
Buscando en el internet he encontrado esta web donde hay muy buenos ejemplos de cómo escribir algo por estilo. Además este buen hombre afirma que su servidor, tambien escrito en php, lleva muchos días funcionando sin dar problemas. Así que reutilizando un poco el código y añadiendo un par de cositas he creado nuestro propio socket server.
Sus caracteristicas son los siguientes:
- escrito en el php
- soporta varios formatos de comunicación (por defecto xml o ‘texto plano’)
- compatible con clientes flash
- fácilmente extensible
- con una interfaz web
Hacerlo funcionar es muy fácil, tan sólo hay que crear una clase que hereda del socket_server y añadirle sus propias funciones.
Aquí hay un ejemplo:
http://anon:anon@websvn.devayd.com/wsvn/public/vendors/socket_server/server_example.php
una vez ejecutado el servidor podemos conectarnos por ejemplo con un cliente telnet:
telnet localhost 8080
probamos la funcion echo, usando el formato raw (mira la clase RawProcessor)
echo#|#|#prueba de la funcion echo
y como respuesta recibiremos:
echoResponse#|#|#0#|#test
En el paquete viene un cliente php, que usa una clase Message para gestionar fácilmente los comandos que se envían y reciben.
En el código tenemos algo así:
$msg = new Message(‘echo’, array(’hello world’), $cliente);
Aunque esta solución es bastante simple y quizás le falta un poco de trabajo para hacerlo más estable, usando este Socket Server podemos tener un servidor de sockets funcionando en questión de minutos.
Es muy fácil tb usando este código adaptarlo a otros lenguajes. Nosotros hemos creado clientes del socket server por ejemplo en python o java.
El código para descargar está aquí:
http://anon:anon@websvn.devayd.com/wsvn/public/vendors/socket_server/?op=dl&rev=0&isdir=1
Posted in


