2010-12-03 2 views
3

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

Сценарий это. Мы хотели бы, чтобы пользователи нашего сайта могли нажать кнопку «Поддержка Live Chat», после чего они получили всплывающее окно, которое пытается связать их с одной из нашей группы поддержки.

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

Учитывая, что наш настольный клиент будет создан с использованием WPF на C# .NET, а наш сайт - ASP.NET MVC 2 - какой был бы лучший способ установить связь между ними?

Мои первоначальные мысли заключались в том, чтобы веб-страница хранила чат в базе данных SQL и как-то «Ping», который был установлен на рабочем столе клиента, чтобы сообщить об этом в свой журнал чата. Аналогично для рабочего стола в Интернете. Но я не уверен, как реализовать это между двумя различными платформами. Если бы это был настольный клиент для настольного клиента, я предполагаю, что это будет намного проще, но это не так.

Кроме того, пожалуйста, обратите внимание, что я понимаю, что есть уже коммерческие приложения, которые делают это. Однако нам нужна определенная функциональность, которая выходит за рамки простого чата - не стоит вникать в специфику, но в основном мы должны реализовать свое собственное решение.

Любая помощь очень ценится.

+0

Вы нашли решение? Я также ищу реализацию такого же типа. Можете ли вы поделиться своими идеями? – 2012-07-23 11:08:05

ответ

0

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

Если вы по-прежнему хотите вычеркнуть самостоятельно, основным препятствием, которое вам нужно преодолеть, является то, как выталкивать сообщения в браузер. «Pinging» браузер с сервера невозможен с использованием чистых веб-технологий, потому что HTTP построен на модели запроса/ответа «только для тяги». Между клиентом на сервере не поддерживается постоянное соединение. После того, как сервер завершил отправку страницы в broswer, соединение исчезло.

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

Лучшим решением будет использование Silverlight, Flash или других технологий с толстым клиентом, работающих в браузере. Затем вы можете реализовать службу, которая обрабатывает маршрутизацию сообщений между клиентами. This article on CodeProject может быть хорошим местом для начала.

+3

«Pinging» браузер с сервера невозможно с использованием чистых веб-технологий »- это [более не верно] (http://en.wikipedia.org/wiki/WebSockets). – josh3736 2010-12-03 19:05:03