Представьте себе многопользовательскую доску, где несколько человек могут рисовать одновременно.Для простоты, скажем, на доске есть один объект, который может быть перемещен или удален любым пользователем.Не существует понятия о пользовательских объектах (т. Е. Важно, чтобы любому пользователю было разрешено манипулировать любым объектом ... это бесплатная доска для всех)
Моя проблема в этом ... если два пользователяпопробуйте одновременно выполнить другое действие над объектом, то есть один удаляет его, другой перемещает его, что происходит?
Прямо сейчас - просто пропуская сообщения, он выходит из строя.
Одна идея заключалась в том, чтобы иметь серверный элемент управления, который решает, кто имеет контроль над объектом, и ничто не может происходить на стороне клиента, пока этот конфликт не будет разрешен.Разрешение конфликтов может основываться на принципах «первым пришел - первым обслужен».
Несмотря на то, что это может произойти очень быстро, небольшая задержка (~ 50-300 мс) недопустима, поскольку перемещение должно быть мгновенным на стороне клиента,Например, вместо того, чтобы манипулировать объектами, подумайте о ручке.Чтобы была задержка, пока они уже не начали рисовать ... не хорошо!
Другая идея заключалась в том, чтобы иметь кнопку "запрос управления", которая запрашивает расширение на стороне сервера для управления .... та же идеякак и раньше, но теперь они не разочарованы начальной задержкой рисования пером.Это также не очень хорошо, потому что они должны нажимать на эту кнопку, чтобы сделать что-нибудь, и эта доска действительно предназначена для детей ...
Есть ли другие решения?:)