Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was effizienter ist, um WebSocket-Updates mit einer MySQL-Datenbankänderung zu senden

Wenn Sie Websockets verwenden, sollten Sie Benachrichtigungen vom Client verwenden. Das ist einer ihrer Hauptanwendungsfälle.

Wenn Sie sich Sorgen über Inkonsistenzen aufgrund von Verbindungsabbrüchen oder zwischenzeitlichen Änderungen machen, könnten Sie ein System ähnlich HTTP-ETags , wobei der Client einen Hash-Code senden würde, auf den Sie auf der Serverseite antworten können, wenn es einen Konflikt bei der Aktualisierung gibt.

Update:Ich glaube, ich habe Ihr anfängliches Problem etwas falsch verstanden. Wenn ich Ihren Anwendungsfall richtig verstehe:Sie senden Datenbankaktualisierungen von einem Client und danach müssen alle verbundenen Clients aktualisiert werden. In diesem Fall denke ich, dass der Server die Update-Nachrichten senden sollte, nachdem DB-Updates durchgeführt wurden, also stimme ich Lösung 4 zu. Ich gehe hier davon aus, dass Ihr Websocket-Server derselbe Server ist, auf dem PHP läuft und der die DB-Updates durchführt.

Abhängig von Ihrem Anwendungsfall sollte der Client jedoch bei der nächsten Anfrage immer noch einen Hash-Wert senden, der seine "Weltanschauung" identifiziert, sodass Sie nicht mehrmals identische Aktualisierungen durchführen würden, wenn eine Verbindung unterbrochen wird.

Update 2:So wurde jetzt verstanden, dass Sie tatsächlich einen separaten, eigenständigen Websocket-Server verwenden. Grundsätzlich haben Sie zwei verschiedene Webserver auf der Serverseite und haben ein Problem mit der Kommunikation zwischen den beiden. Dies ist ein echtes Problem, und ich würde empfehlen, jeweils nur einen Server zu verwenden – werfen Sie entweder einen Blick auf die Verwendung von Apache-Websocket-Unterstützung (experimentell und nicht wirklich empfohlen) oder Ihre PHP-Skripte auf die Websocket-Instanz migrieren.

Weder PHP noch Apache wurden wirklich mit Blick auf Websockets entwickelt. Es ist recht einfach, einen eigenständigen Websocket-Server nur mit PHP einzurichten, aber es ist möglicherweise nicht so einfach, den Rest des PHP-Stacks darauf zu migrieren, wenn der Code auf Apache/Webserver angewiesen ist. Die Apache-Websocket-Unterstützung ist auch kaum optimal. Für eine echte Websocket-Lösung wäre es leider am besten, eine Technologie zu verwenden, die von Grund auf dafür entwickelt wurde.