Mysql
 sql >> база данни >  >> RDS >> Mysql

Кое е по-ефективно за изпращане на актуализации на WebSocket с промяна на MySQL база данни

Ако използвате websockets, трябва да използвате известия от клиента. Това е един от основните им случаи на употреба.

Ако се притеснявате от несъответствия поради прекъсване на връзката или нещо, което се променя между тях, можете да внедрите система, подобна на HTTP ETags , където клиентът ще изпрати хеш код, на който можете да отговорите от страната на сървъра, ако има конфликт при актуализирането.

Актуализация:Предполагам, че разбрах първоначалния ви проблем малко погрешно. Ако разбирам правилно вашия случай на използване:вие изпращате актуализации на база данни от клиент и след това всички свързани клиенти трябва да бъдат актуализирани. В такъв случай смятам, че сървърът трябва да изпрати съобщенията за актуализация, след като актуализациите на DB са извършени, така че съм съгласен с решение 4. Предполагам, че вашият websocket сървър е същият сървър, който изпълнява PHP и извършва актуализациите на DB.

Въпреки това, в зависимост от вашия случай на употреба, клиентът все пак трябва да изпрати хеш стойност при следващата заявка, идентифицираща неговия „глед на света“, така че няма да правите идентични актуализации многократно, ако връзката се прекъсне.

Актуализация 2:така че сега се разбра, че наистина използвате отделен, самостоятелен уебсокет сървър. По принцип имате два различни уеб сървъра от страната на сървъра и имате проблем как да комуникирате между двата. Това е истински проблем и бих препоръчал да използвате само един сървър наведнъж - или погледнете използването на Поддръжка на Apache websocket (експериментално и наистина не се препоръчва) или мигриране на вашите php скриптове към екземпляра на websocket.

Нито PHP, нито Apache наистина са изградени с уебсокети в ума. Доста лесно е да настроите самостоятелен websocket сървър, като използвате само PHP, но може да не е толкова лесно да мигрирате останалата част от PHP стека към него, ако кодът разчита на Apache/уеб сървър. Поддръжката на Apache websocket също не е оптимална. За истинско websocket решение, за съжаление, най-добрата практика би била използването на технология, която е създадена за него от самото начало.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. @BindBean на JDBI не намира наименувани параметри в класа на bean по време на INSERT

  2. sql заявката не извлича всички записи, просто извлича последния запис

  3. Не можа да се намери файл mysql-connector-java-5.1.13-bin.jar

  4. Зарежда се клас com.mysql.jdbc.Driver. Това е отхвърлено. Новият клас драйвери е `com.mysql.cj.jdbc.Driver'

  5. Как да накарам тази SQL заявка да извежда два реда, а не две полета?