2015-05-27 1 views
0

Мы разработали приложение DOJO, у меня есть обновленная функциональность. Пользователи могут обновлять одну запись (например, запись 1), в то время как другой пользователь пытался обновить такую ​​же запись, в этом случае мне нужно отключить кнопку редактирования для пользователя.Как заблокировать функциональность для разных пользователей для доступа к одной записи в dojo

Любой возможный способ сделать то же самое с использованием рамки DOJO.

Пожалуйста, помогите мне в этом.

ответ

0

Это было бы невозможно/трудно реализовать. Невозможно обновить кнопку редактирования в реальном времени, когда кто-то обновляет определенную запись. Самое близкое, что вы получите, это использовать WebSockets и отправлять сообщения всем пользователям, когда произойдет транзакция.

Но я уверен, что это никогда не сработает. Даже с помощью WebSockets все еще остается небольшая задержка до того, как сообщение будет обработано клиентом, и кнопка отключена. Эта небольшая задержка может быть достаточной для начала транзакции на стороне сервера.

Единственный способ, которым я могу себе представить, чтобы это работало, чтобы иметь клиенты отправить сообщение обратно на сервер, указывающего, что кнопка редактирования отключается, а затем вы можете начать транзакцию, как это:

  1. Пользователь нажмет кнопку Обновить
  2. клиент пользователя посылает WebSocket сообщение, чтобы сообщить запись обновляется
  3. сервер получает это сообщение и помещает запись, которая должна быть обновлена ​​в какой-то очереди
  4. Все остальные клиенты получают это сообщение, а также и disabl е кнопку
  5. обновление Все остальные клиенты отправляют сообщение, чтобы сообщить им отключить кнопку обновления
  6. ожидает ответа сервера, пока все кнопки редактирования отключены, а затем обновляет запись
  7. запись обновляется, а сервер посылает всех клиентов а сообщение
  8. Все клиенты повторно включить их кнопка обновления

Однако, это просто плохая практика. Это будет дорого стоить, и это дает ложное представление о безопасности транзакций. Любой может снова включить кнопку (выполнив правильный код JavaScript), и если серверу придется ждать ответа всех клиентов, злоумышленник никогда не сможет отправить ответ (5), и это будет означать, что записи никогда не обновляются к гораздо большему количеству проблем, которые необходимо решить.

Смежные вопросы