Как реализовать "другие пользователи, просматривающие этот объект" - PullRequest
1 голос
/ 14 января 2012

Например, в Zendesk есть функция под названием Уведомление о столкновении с агентом - когда вы редактируете заявку, вы получаете примечание, если кто-то другой ее редактирует.

Что такое инфраструктура для поддержки подобной функции? Этот вопрос , кажется, нацелен на то же самое, но на гораздо более низкий уровень.

Для того, чтобы система была полностью динамичной (также уведомляющей первого зрителя) и достаточно быстрой, возможно, понадобится что-то вроде кометы или веб-сокета. Но в отличие от систем чата (пример кометы), в системе Ticket пользователи постоянно переключают страницы.

Каким будет поток программ и инфраструктура сервера для подобных вещей?

1 Ответ

3 голосов
/ 16 января 2012

Если вы хотите разрешить совместную работу в реальном времени, тогда этот вопрос , в котором также упоминается «Операционные преобразования», будет вам интересен.И есть также вопрос о библиотеках операционных преобразований .

Каким будет поток программ и инфраструктура сервера для подобных вещей?

Я работаю на Pusher , поэтому могу сказать вам одно решение с использованием нашей технологии.

  1. Пользователь A открывает страницу, где может произойти «столкновение».На странице подпишитесь на канал для этой страницы.
  2. Пользователь A начинает редактирование страницы.Отправьте запрос AJAX на сервер, чтобы сохранилось некоторое состояние о том, что страница редактируется.Инициируйте событие на канале, заявив, что пользователь редактирует страницу.
  3. Пользователь B открывает страницу.Страница загружается и может отображать информацию из постоянного состояния, что страница редактируется.
  4. Пользователь A завершает редактирование, и на сервер отправляется запрос на обновление состояния страницы.Инициируйте событие, указывающее, что никто не редактирует страницу.Это событие будет распространено на пользователя B (обновленная страница может также распространяться через событие или через AJAX-запрос при получении события).
  5. Пользователь B теперь знает, что он / она может редактировать страницу.Они начинают редактирование (см. Шаг 2.), и пользователь A получает уведомление о том, что пользователь B. теперь редактирует страницу.

Было бы также неплохо использовать присутствие , чтобы вы моглиузнать, кто еще просматривал страницу, и позволить пользователям обсуждать изменения по мере их возникновения.

...