Какое решение / технология рекомендуется для этого варианта использования? - PullRequest
1 голос
/ 27 марта 2012

Я создаю веб-сайт, который предлагает тренировку 1 на 1 по различным темам.Обучение проводится через Интернет (видеозвонок, загрузка документов и тому подобное), и одна из самых важных вещей - это то, что клиент платит за минуту.Моя проблема заключается в следующем: как я узнаю, когда сеанс коучинга заканчивается (чтобы я мог правильно выставить счет клиенту)?

Я планирую сохранить сеанс коучинга в БД примерно так:

  coach_id:integer
  client_id:integer
  created_at:datetime
  updated_at:datetime
  in_progress:boolean

В конце сеанса я сделаю разницу между updated_at и creation_at и получу длину сеанса.

Вот потенциальные проблемы, которые я вижу:

  • тренер теряет доступ в Интернет => в этом случае клиент нажимает кнопку на веб-сайте, которая уведомляет нас о том, что у сеанса возникла проблема, и updated_at сеанса будет обновлено, а in_progress будетбыть установленным на false

  • клиент теряет доступ в интернет => тот же рабочий процесс, как если бы тренер терял доступ в интернет

  • оба теряют доступ в интернет =>это самый сложный случай.Я не уверен, как уведомить сервер о том, что сеанс следует считать завершенным.Я думаю сделать это с помощью push, и браузер клиента и браузер тренера обновляют сервер каждую минуту.В худшем случае ошибка приведет к разнице в 1 минуту, что является приемлемым.Недостатком является то, что я думаю, что это может сильно загрузить сервер, и я не знаю, будет ли это жизнеспособным решением, если у нас будет много пользователей.

Что выдумать об этом подходе?В случае, если это имеет значение, приложение будет построено на Rails 3.2.

1 Ответ

1 голос
/ 27 марта 2012

Почему вы не рассматриваете HTML5 EventSource или WebSockets как возможное средство обнаружения соединения / потери соединения?

По крайней мере, в .NET (и я предполагаю, что во всех серверных средах) можно увидеть, подключен ли клиент (по протоколу tcp). EventSource / WebSockets помогает вам установить всегда открытое соединение (в отличие от соединения запрос / ответ с коротким периодом соединения), которое вы можете отслеживать, если оно все еще работает / открыто.

Настолько важно, чтобы решение было реализовано на сервере веб-сокетов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...