2012-03-03 2 views
0

В текущем веб-приложении, где пользовательский интерфейс не может быть изменен для обновления страниц, а не обновления всего страницы (ссылка на другие страницы и т. Д.). В конце концов это будет помещено в не обновляющийся div, однако на данный момент ссылки на страницы будут уничтожать/создавать веб-рабочего, заставляя создавать новое соединение сокета. Какая утечка в системе при создании новых соединений сокетов с помощью Socket.IO?Неужели страница обновляет поражение от использования NodeJS/Socket.IO и вызывает слишком много утечки на сервере при создании новых соединений?

Учитывая, что вся страница будет обновлена, это все еще хорошее решение?

- ОБНОВЛЕНИЕ -

Заявка на это для системы на основе push-уведомление, как «друг» логины и т.д. Я вижу это как нечто похожего на конфиденциальное сообщение в среде чата. Я хотел бы транслировать эти события, и клиентская сторона будет управлять тем, кто действительно получает обновления. Кажется правильным, как это сделать?

ответ

2

Здесь есть много факторов. Я перечислю некоторые из них:

  1. Какой браузер пользователь, используя и то, что их система, как?

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

  2. Какие транспортные средства вы включили?

    Вы можете configure Socket.IO to use many different types of transports, включая WebSocket, опрос XHR, опрос JSONP и даже Flash. Какой транспорт фактически используется, будет основываться на том, что вы настроили, и на том, что поддерживает браузер пользователя.

    Некоторые из этих транспортов, таких как Flash (отключено по умолчанию), очевидно, потребуют значительно больших затрат на установку. Другие, такие как опрос XHR, по своей сути неэффективны, но в значительной степени не затронуты новыми запросами на страницы, так как в любом случае вы делаете несколько запросов опроса.

  3. Что вы делаете, когда установлено соединение Socket.IO и когда происходит отключение?

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

  4. Как часто эти обновления страницы случаются?

    Возможно, только когда пользователь нажимает на ссылку? Или у вас есть что-то, что заставляет страницу обновляться очень часто?

  5. Какое оборудование и подключение имеют ваши серверы?

    Это довольно большая переменная, которую трудно исправить.

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

+0

Большое спасибо, спасибо. Однако мне нужно кое-что разъяснить. Я хочу, чтобы соответствующие клиенты были уведомлены о действиях системы. Они могут выполнять запросы по времени (каждые 5 секунд - опрос/вытягивание), где система проверяет таблицу db на обновления с момента последней проверки. Хотя немного неясно о толчке. Я хотел бы создать push для всех новых системных событий для всех клиентов (без поиска таблицы событий в главном событии, например, с помощью pull), и соответствующих клиентов для отображения уведомления. Как это обрабатывается с помощью не WebSocket XMPP? Что лучше/рекомендуется? Обновлено выше, чтобы отразить это в системе. – ElHaix

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

  • Нет связанных вопросов^_^