Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O que é mais eficiente para enviar atualizações do WebSocket com uma alteração no banco de dados MySQL


Se você usa websockets, deve usar as notificações do cliente. Esse é um de seus principais casos de uso.

Se você está preocupado com inconsistências devido à queda de conexão ou alguma mudança intermediária, você pode implementar um sistema semelhante a HTTP ETags , onde o cliente enviaria um código hash que você pode responder no lado do servidor se houver um conflito na atualização.

Atualização:acho que entendi seu problema inicial um pouco errado. Se eu entendi seu caso de uso corretamente:você está enviando atualizações de banco de dados de um cliente e depois disso todos os clientes conectados precisam ser atualizados. Nesse caso, acho que o servidor deve enviar as mensagens de atualização após as atualizações do banco de dados terem sido feitas, então concordo com a solução 4. Estou assumindo aqui que seu servidor websocket é o mesmo servidor executando PHP e fazendo as atualizações do banco de dados.

No entanto, dependendo do seu caso de uso, o cliente ainda deve enviar um valor de hash na próxima solicitação identificando sua "visão do mundo", para que você não faça atualizações idênticas várias vezes se uma conexão for interrompida.

Atualização 2:então ficou entendido que você realmente usa um servidor websocket independente e separado. Basicamente, você tem dois servidores da Web diferentes no lado do servidor e está tendo um problema sobre como se comunicar entre os dois. Este é um problema real, e eu recomendo usar apenas um servidor por vez - dê uma olhada usando Suporte para websocket do Apache (experimental e não recomendado) ou migrando seus scripts php para a instância do websocket.

Nem o PHP nem o Apache foram realmente construídos com websockets em mente. É muito fácil configurar um servidor websocket autônomo usando apenas PHP, mas pode não ser tão fácil migrar o restante da pilha PHP para ele se o código estiver confiando no servidor Apache/web. O suporte ao websocket do Apache também dificilmente é o ideal. Para uma solução de websocket real, infelizmente, a melhor prática seria usar uma tecnologia criada para ela desde o início.