¿Cómo sería Golang una buena opción para un servidor WebSocket para una aplicación PHP?

Entonces … no hay mucho para continuar con la pregunta: sería realmente útil tener una idea un poco más detallada de lo que el autor de la pregunta espera lograr. Dicho eso …

He usado los servicios de GoLang como servidores HTTP y servidores de socket frente a aplicaciones PHP.

La razón principal para usarlos es almacenar en caché los datos para consultas o agrupar los mensajes entrantes.

En el caso de la consulta, una de mis aplicaciones sirve datos meteorológicos, lo que permite a los usuarios solicitar datos para cualquier período de tiempo entre 10 minutos y 10 días. El servicio golang almacena en caché los últimos 10 días de datos (actualizándose llamando a la aplicación PHP a través de HTTP cada minuto). Entonces, cuando llegan las solicitudes entrantes, en lugar de ir a Apache, luego a PHP, luego a MYSQL (y consumiendo todos los recursos del servidor y el tiempo que implica ese viaje) son autenticados y atendidos por un solo servicio GoLang. Ahora, no tengo cifras exactas para las mejoras de rendimiento / utilización de recursos que esto trae, en parte porque todavía no he probado el servicio GoLang hasta sus límites. Pero es al menos cien veces más rápido y utiliza una cantidad trivial de recursos del servidor.

Por lo tanto, buscamos un equilibrio entre la simplicidad de PHP (y la disponibilidad inmediata de desarrolladores PHP lo suficientemente buenos) y el alto rendimiento de Go. Muchas de las cosas que hace nuestra aplicación (cosas como la administración de usuarios y la contabilidad) no requieren un rendimiento excelente, por lo que PHP es excelente para esas cosas. Una pequeña cantidad de cosas (como la ingestión y el servicio de datos) realmente necesita escalar, por lo que usamos Go para esos servicios.

Claro que eso funcionaría. Sin embargo, ¿cómo va a obtener actualizaciones de datos su servidor Golang? Esa es la pregunta.