Храповой сервер против длительного опроса

Я разрабатываю веб-сайт с функцией чата и требует мгновенных уведомлений, когда пользователь получает новое сообщение. Я пытаюсь решить, использовать ли сервер Ratchet или реализовать систему длительного опроса с помощью AJAX. В настоящее время я реализовал базовый сервер Pub/Sub Ratchet, который отлично работает при доставке уведомлений, пока пользователь остается на странице «Чат» на моем сайте. Моя проблема здесь в том, что соединение закрывается всякий раз, когда пользователь переходит на любую другую страницу, и мне нужно заново создать соединение с сервером. Я знаю, что существуют возможные решения, такие как наличие подключения к веб-сокету в IFrame, которое всегда отображается, однако я не хочу идти по этому пути, если мне это не нужно. Будет ли лучше реализовать длительный опрос с помощью AJAX? Меня беспокоит, что если я буду постоянно повторно создавать подключение пользователей к серверу Ratchet всякий раз, когда они меняют страницы на сайте, это приведет к слишком большим накладным расходам, когда сайт интенсивно используется (тысячи пользователей одновременно). У кого-нибудь есть опыт в этой области с серверами Ratchet?

Спасибо.


person user3264311    schedule 07.05.2014    source источник


Ответы (1)


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

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

Поэтому откройте соединение через веб-сокет для каждой вкладки браузера, которая есть у пользователя. Если они откроют новую вкладку или перейдут на другую страницу, просто снова откройте соединение.

person Nate    schedule 19.01.2015