sql >> Base de Datos >  >> RDS >> Mysql

¿Cuál es más eficiente para enviar actualizaciones de WebSocket con un cambio de base de datos MySQL?

Si usa websockets, debe usar notificaciones del cliente. Ese es uno de sus principales casos de uso.

Si le preocupan las inconsistencias debido a la caída de la conexión o algún cambio intermedio, puede implementar un sistema similar a HTTP ETags , donde el cliente enviaría un código hash que puede responder en el lado del servidor si hay un conflicto en la actualización.

Actualización:Supongo que entendí un poco mal tu problema inicial. Si entiendo su caso de uso correctamente:está enviando actualizaciones de la base de datos desde un cliente y luego todos los clientes conectados deben actualizarse. En ese caso, creo que el servidor debería enviar los mensajes de actualización después de que se hayan realizado las actualizaciones de la base de datos, por lo que estoy de acuerdo con la solución 4. Asumo aquí que su servidor websocket es el mismo servidor que ejecuta PHP y realiza las actualizaciones de la base de datos.

Sin embargo, según su caso de uso, el cliente aún debe enviar un valor hash en la próxima solicitud que identifique su "visión del mundo", por lo que no estaría realizando actualizaciones idénticas varias veces si se interrumpe una conexión.

Actualización 2:por lo que ahora se entendió que de hecho usa un servidor websocket independiente e independiente. Básicamente, tiene dos servidores web diferentes en el lado del servidor y tiene un problema sobre cómo comunicarse entre los dos. Este es un problema real, y recomendaría usar solo un servidor a la vez; eche un vistazo al uso de Compatibilidad con Apache websocket (experimental y no muy recomendado) o migrando sus scripts php a la instancia de websocket.

Ni PHP ni Apache se crearon realmente con websockets en mente. Es bastante fácil configurar un servidor websocket independiente usando solo PHP, pero puede que no sea tan fácil migrar el resto de la pila de PHP si el código depende de Apache/servidor web. El soporte web de Apache tampoco es óptimo. Desafortunadamente, para una solución de websocket real, la mejor práctica sería utilizar una tecnología creada desde cero.