2016-05-31 3 views
0

I m develloping веб-приложение, в котором я должен показать, скажем, список задач.
Что мне нужно сделать, так это открыть пользователю задачу (то есть открыть ее в своем браузере), она удаляется из всех остальных списков пользователей или показывает, что задача выполнена, никто не может открыть задачу, которая уже открытый кем-то другим.

Кроме того, мне нужно, чтобы пользователь закрыл задачу (например, пользователь закрыл свой браузер), он снова добавляется в список других пользователей.

Как я могу это сделать, пожалуйста? WebSocket на стороне клиента? Любые другие варианты выбора?
Как управлять этим на стороне сервера?

СпасибоКак сделать блокировку конфиденциальности в реальном времени в веб-приложении?

+1

Что вы сделали до этого момента, чтобы добиться такого поведения? Какую технологию вы используете? (например, JQuery на передней панели, Spring для промежуточного программного обеспечения и т. д.). Вы можете запустить запрос ajax на «щелчок» задачи и позволить серверу удалять эту задачу из «пула задач» и запускать другой запрос ajax, когда пользователь «закрывает» задачу. На данный момент это все, что я могу вам сказать. –

+0

Не начинайте кодирование, пока я не получу четкое представление о «выполнимости» этого вопроса, я подумал об открытии веб-узла на стороне клиента, с чем-то (правда), чтобы сохранить блокировку задачи, но не уверен в этом , Я никогда раньше этого не делал (используйте websocket), только прочитал некоторые документы, но я думаю, что, например, 100 000 веб-узлов, подключающих мой сервер в то же время, проверяя блокировки, не будут хорошей идеей. – hereForLearing

+0

только что видели ваше редактирование, вы можете сказать, что я использую Spring (на самом деле я использую grails, но это то же самое, у Grails меньше пользователей здесь, поэтому предпочли сделать это java-вопросом), я прочитал статья об использовании ajax для этого не рекомендуется, так как ответы с сервера могут возвращаться беспорядочно. – hereForLearing

ответ

2

Существует два решения (что я знаю) для вашей проблемы:

  • Ajax (и Long Опрос)

Использование Ajax вы можете опрашивать сервер каждые X секунд для данных, необходимых для реализации описанного вами поведения. Это может сработать, но это не рекомендуется. прочитайте почему на this thread.

  • WebSocket

Так же, как сокет вы используете на настольном приложении (отсюда и название), вы можете открыть соединение WebSocket (не HTTP один), держать его до тех пор, по мере необходимости и закрывать его только тогда, когда вы закончите с ним. Это предпочтительный способ постоянного обмена данными между клиентом и сервером. Также supported by almost every major browser out there

Существует другие технологии, такие как WebRTC и сервера-Sent Events, но учитывая ваше описание проблемы, тем не может быть то, что вы ищете.

Вне темы: И я не уверен, почему ваш вопрос был опущен, выглядит законным для меня.

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