2012-07-04 20 views
37

Con todo el revuelo alrededor de WebSockets, es bastante difícil encontrar un buen tutorial sobre cómo usarlos con un servidor Apache en Google.Uso de WebSocket en el servidor Apache

Estamos desarrollando un complemento, en PHP (symfony2), que se ejecutará de vez en cuando como una instancia de chat. Y encontramos que WebSockets es más interesante, estándar y rápido que AJAX en este sentido. Lo que pasa es que no tenemos mucho Recursos de administrador de sistemas en nuestro grupo y nos encontramos difícil de recopilar buenas informaciones sobre los siguientes asuntos:

  • ¿Se puede ejecutar una instancia de WebSocket en un tradicional Apache, servidor dedicado, y si sí, ¿tiene enlaces útiles para nosotros?
  • Si necesitamos modificar el servidor, ¿qué tipo de herramientas recomendaría saber que no somos muy hábiles en sysadmin por lo que no podemos darnos el lujo de tener un alto mantenimiento *** en esto.

Muchas gracias,

ps: vamos a vincular de nuevo a su blog/sitio que vamos a hacer un post técnica/informativo en nuestra DevBlog sobre esta parte de nuestra aplicación.

¡Gracias de nuevo!

+0

Usted puede probar esto también [ApacheWS] (http://www.apache-ws.tk) –

Respuesta

14

Una ruta es utilizar un servidor de sockets web instalado de forma independiente.

Para PHP que puede probar: http://code.google.com/p/phpwebsocket/ o http://github.com/Devristo/phpws/

Hay algunos otros proyectos que se puede tratar así.

Básicamente, debe cargar, descomprimir y comenzar a ejecutar el proceso.

En la interfaz, tendrá javascript que se conecta al servidor en el puerto específico.

La mayoría de los servidores websocket tienen una demostración que repite todo lo que escucha, por lo que este es un buen lugar para escribir algunos códigos de prueba. Incluso puede encontrar una implementación de chat rudimentario.

La parte difícil es monitorear el servidor de socket web y asegurarse de que funcione sin problemas y de forma continua.

Intente probar en tantos navegadores/dispositivos como sea posible ya que esto decidirá en qué implementación de servidor websocket usted elige. Hay protocolos viejos y nuevos que debes tener en cuenta.

+0

Muchas gracias. ¿Tiene alguna herramienta de monitoreo en mente por casualidad? ¡Que pasen un buen rato! –

+0

Tenemos nuestras propias herramientas de control de peso ligero. Para empezar, un simple script cron que verifica cuando el proceso no se está ejecutando y lo reinicia. Puede construir a partir de eso o buscar aplicaciones de monitoreo de procesos ya preparadas. – zaf

+0

Ok, estoy seguro de que nuestro equipo de desarrollo va a poder hacer algo. ¡Gracias de nuevo! –

17

Como @zaf afirma que es más probable que encuentre una solución PHP independiente, no algo que se ejecute en Apache. Eso dijo que hay un apache WebSocket module.

Sin embargo, el problema fundamental es que Apache no se creó teniendo en cuenta muchas conexiones persistentes en mente. Junto con PHP, se basa en la idea de que las solicitudes se realizan y las respuestas se envían rápidamente. Esto significa que los recursos se pueden agotar muy rápidamente si mantiene abiertas las solicitudes y tendrá que examinar las escalas horizontales con bastante rapidez.

Personalmente yo creo que hay dos opciones:

  1. utilizar una solución alternativa en tiempo real la tecnología web y la comunicación entre la aplicación web y la infraestructura en tiempo real utilizando colas web o solicitudes de corta duración (Web Services).
  2. Descargue el manejo de las conexiones persistentes y la ampliación de la infraestructura web en tiempo real a un servicio alojado en tiempo real. Trabajo para Pusher y pertenecemos a esta categoría.

Para las opciones tanto alojadas como alojadas, puede consultar mi realtime web tech guide.

+0

Cosas muy interesantes :) ¡muchas gracias! Me encanta tu guía, aunque no ayuda mucho a diferenciar entre las soluciones. Comprobaremos la documentación;) ¡gracias de nuevo! –

+0

Necesito encontrar el tiempo para probar todas las tecnologías y proporcionar una guía sobre los pros/contra de las diferentes opciones. Por ahora, es solo una lista para hacer clic, un punto de partida para sus propias investigaciones. – leggetter

+0

y ya es increíble :) ¡gracias por el trabajo! –

7

Presenté otro servidor websocket: PHP Ratchet (Github).

Esta es una lista mejor y más completa de los códigos del lado del servidor & del cliente y el soporte del navegador.

Compruebe esto link.

+0

Gracias, pero ¿por qué es mejor? – Ben

+0

porque es un subconjunto FAST & EASY & React (http://reactphp.org). Tiene buenos documentos y soporte. – ShahRokh

+2

¿podemos echarle un vistazo a alguna prueba? – Tebe

-2

Otra ruta es utilizar un servidor websocket dedicado.

Pruebe Achex Websocket Server en www.achex.ca y revise los tutoriales.

O

Si realmente quiere Apache, echa un vistazo a Apache Camel. (Pero hay que configurarlo y es un poco más complicado que el servidor achex) http://camel.apache.org/websocket.html

Cuestiones relacionadas