tutorial socket example español sockets client-server communication

sockets - example - socket.io php



Comunicación basada en Socket vs HTTP para una aplicación cliente/servidor móvil (1)

Hace poco decidí emprender un proyecto de ingeniería de software bastante grande que incluirá el desarrollo de una aplicación cliente-servidor. Mi plan es desarrollar tantos clientes como sea posible: incluyendo aplicaciones nativas de iPhone, Android y Blackberry, así como una aplicación basada en la web.

Para mi servidor estoy planeando usar un VPS (posiblemente de slicehost.com) ejecutando una versión de Linux con una base de datos MySQL. Mi primera pregunta es cuál debería ser mi estrategia para que los clientes interactúen con el servidor. Mis ideas son:

  1. Comunicación basada en HTTP-POST o GET con un script PHP.
    Esto es algo con lo que estoy muy familiarizado: pasar información a un script PHP desde un formulario, trabajar con él y devolver el resultado. Supongo que me gustaría devolver los resultados a los clientes como una especie de cadena basada en XML o JSON. También estoy asumiendo que me gustaría crear una API bien definida para los clientes que desean interactuar con mi servidor.

  2. Comunicación basada en socket con un script PHP, un programa Java o un programa C ++
    Esto con lo que estoy menos familiarizado. He trabajado con tutoriales básicos sobre cómo crear un script o una aplicación simple que crea un socket, escucha una conexión y devuelve datos. Supongo que hay mucho menos datos de comunicación: sobrecarga con este método que con un método basado en HTTP. Mi sueño es que haya MUCHOS clientes concurrentes en uso, todos trabajando con el servidor / base de datos. No estoy seguro de si un diseño simple de comunicación basada en script HTTP / PHP puede escalarse de manera efectiva para satisfacer las necesidades de muchos clientes. Además, es posible que desee la capacidad de un Server-Push para los clientes activados por varios eventos del servidor. Tampoco estoy seguro de qué lenguaje de programación es el más adecuado para esto. Si la eficiencia es una gran preocupación, ¿me imagino que un script PHP podría no ser lo suficientemente eficiente?

¿Hay una forma comúnmente aceptada de hacer esto? Para mí, este es un intento de cerrar la brecha entre algunas de mis habilidades actuales. Tengo mucha experiencia con PHP y me relaciono con una base de datos MySQl para servir páginas web dinámicas. También tengo mucha experiencia en el desarrollo de aplicaciones nativas para iPhone (sin embargo, ninguna que haya tenido una comunicación significativa basada en el servidor). También he trabajado con Java / C ++, y he desarrollado aplicaciones en ambos lenguajes que se han interconectado con MySQL.

No anticipo que mis clientes envíen / reciban una gran cantidad de datos hacia / desde un servidor. Algo a la par con un conjunto de cadenas por evento determinado del lado del cliente.

Otra pregunta: usar un VPS - ¿buena idea? Obviamente no quiero pagar por un servidor dedicado completo (slicehost ofrece un VPS a partir de ~ $ 20 / mes), y supongo que un VPS será capaz de cumplir los requisitos de unos pocos clientes iniciales. A medida que más y más usuarios comienzan a interactuar con mi servidor, supongo que será posible migrar a ''sectores'' más grandes y, eventualmente, eventualmente a un servidor dedicado si es necesario.

¡Gracias por el consejo! :)


Yo diría que vaya con la simplicidad de HTTP, al menos hasta que sus necesidades superen sus capacidades. (Cuanto más claro sea tu aplicación, menos HTTP cabe).

Para un bajo costo y escalabilidad, es probable que no pueda equivocarse con una nube como Rackspace o Amazon. Pero recién estoy comenzando con eso, mis servidores han sido VPS desde tektonic hasta ahora.