Mysql
 sql >> Base de données >  >> RDS >> Mysql

Ce qui est plus efficace pour envoyer des mises à jour WebSocket avec un changement de base de données MySQL

Si vous utilisez des websockets, vous devez utiliser les notifications du client. C'est l'un de leurs principaux cas d'utilisation.

Si vous vous inquiétez des incohérences dues à la perte de connexion ou à quelque chose qui change entre les deux, vous pouvez implémenter un système similaire à ETags HTTP , où le client enverrait un code de hachage auquel vous pouvez répondre côté serveur en cas de conflit lors de la mise à jour.

Mise à jour :Je suppose que j'ai mal compris votre problème initial. Si je comprends bien votre cas d'utilisation :vous envoyez des mises à jour de base de données à partir d'un client et après cela, tous les clients connectés doivent être mis à jour. Dans ce cas, je pense que le serveur doit envoyer les messages de mise à jour une fois les mises à jour de la base de données effectuées. Je suis donc d'accord avec la solution 4. Je suppose ici que votre serveur Websocket est le même serveur exécutant PHP et effectuant les mises à jour de la base de données.

Cependant, selon votre cas d'utilisation, le client doit toujours envoyer une valeur de hachage lors de la prochaine requête identifiant sa "vision du monde", afin que vous ne fassiez pas plusieurs fois des mises à jour identiques si une connexion est interrompue.

Mise à jour 2 :il était donc maintenant entendu que vous utilisiez en effet un serveur websocket séparé et autonome. Fondamentalement, vous avez deux serveurs Web différents côté serveur et vous rencontrez un problème de communication entre les deux. C'est un vrai problème, et je vous recommande de n'utiliser qu'un seul serveur à la fois - soit jetez un œil à l'aide de Prise en charge d'Apache WebSocket (expérimental et pas vraiment recommandé) ou la migration de vos scripts php vers l'instance websocket.

Ni PHP ni Apache n'ont été vraiment construits avec les websockets à l'esprit. Il est assez facile de configurer un serveur websocket autonome en utilisant uniquement PHP, mais il peut ne pas être si facile de migrer le reste de la pile PHP vers celui-ci si le code repose sur Apache/serveur Web. La prise en charge d'Apache websocket n'est pas non plus optimale. Pour une véritable solution WebSocket, malheureusement, la meilleure pratique serait d'utiliser une technologie qui est conçue pour cela à partir de zéro.