Отправка команд клиенту с помощью Javascript - PullRequest
1 голос
/ 03 октября 2011

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

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

У меня разбираются остальные технологии, и мне нужно собрать набросок того, как будет работать фактическое общение с браузером.

По моим исследованиям, это часто делается с помощью настольного программного обеспечения или плагинов, но на данный момент это выглядит как старая школа. Я знаю, это можно сделать с помощью javascript, либо написав что-то, что постоянно опрашивает сервер на наличие команд (это может сработать, но это выглядит немного расточительно и грубо форс-у), либо с помощью другой техники, которая дает сервер способ вызвать клиента.

Что-то вроде того, какой механизм стекопотока использует, чтобы сообщить, что на текущий вопрос пришли новые ответы, вероятно, сработает.

Так есть ли известная лучшая практика? Что сработало для вас?

Ответы [ 5 ]

3 голосов
/ 03 октября 2011

WebSockets и длинные опросы могут быть хорошим ответом для вас, как предлагают другие ответы. Но также обязательно изучите sw, необходимый для поддержки на бэкэнде (не браузер, большая железная часть вашей системы). Если для браузера требуется всегда открытый дескриптор файла, это может сложиться. - есть способы добавить поддержку большего количества файловых дескрипторов, но решите, хотите ли вы идти по этому пути.

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

Помните, что вы хотите, чтобы ваше решение было надежным. Он должен плавно обрабатывать клиентские отключения, перезагрузки, периодические сбои сети и т. Д.

Не забудьте проверить все вышеперечисленное ....

2 голосов
/ 03 октября 2011

Я считаю, что это то, что пытается создать новый стандарт веб-сокетов html 5, открывая соединение между сервером и клиентом для обеспечения двусторонней связи. Но до того, как этот стандарт вступит в силу, я не знаю ни о каком другом способе, кроме опроса на данный момент.

2 голосов
/ 03 октября 2011

Сервер обычно не может позвонить клиенту.Для этого на стороне клиента должно быть установлено серверное программное обеспечение, которое будет прослушивать и отвечать.В случае веб-браузера такой вещи нет.Поэтому единственное, что вы можете сделать, - это опросить сервер и проверить, есть ли у вас что-то новое.

РЕДАКТИРОВАТЬ:

Я провел небольшой тест, чтобы увидеть, как с этим работает stackoverflow.Мой вывод - периодический опрос по следующей системе.Когда вы хотите добавить ответ, на сервер отправляется почтовый запрос, возможно, для запуска счетчика.После этого через определенные промежутки времени отправляются запросы в / posts / ID / editor-heartbeat / edit с отправкой черновика (то, что вам удалось набрать до тех пор), а ответом является josn, в котором содержится информация об успешном выполнении вашего запроса и количестве сообщений.что где размещено до тех пор.Если это число отличается от 0, отображается полоса, предупреждающая вас.

1 голос
/ 03 октября 2011

Традиционный способ сделать это был с периодическими XHRequest от клиента, спрашивая «у вас есть новое сообщение для меня?»

Есть более причудливые способы, которые включают в себя не закрывать TCP-соединение и /или iframes;если вам интересно, вы можете узнать, как GMail это делает.

Веб-сокеты - это довольно новая технология, которая реализована только в самых последних браузерах, хотя я могу рискнуть.

1 голос
/ 03 октября 2011

Websockets - это то, что вы хотите.

...