2016-04-08 5 views
-1

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

Однако я не совсем уверен, как управлять этими SSE наиболее эффективным способом. У меня есть два варианта:

  1. Непрерывно передавайте SSE.
  2. Открыть и закрыть соединение по мере необходимости.
  3. ??

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

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

Любые мысли?

+1

«эффективный» по какой мере? –

+0

Для сравнения 1 vs 2 – Shawn31313

+1

Я имел в виду: какие показатели вы используете для оценки и сравнения этих двух вариантов? Это латентность? Количество одновременных открытых соединений? Что-то другое? –

ответ

0

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

Если вы хотите реализовать «эффективные» SSE с php, вам понадобится цикл событий , например, предоставляемый платформой, например Node.JS или Twisted для Python. У нас есть React. И вы должны использовать его.

В google Я нашел только old repository, но они должны дать вам представление о том, что делать.

... или просто используйте Node.js: правильный инструмент для правильной работы.

+0

Цикл событий не поможет уменьшить количество подключений и пропускную способность. Он разрешает иметь только несколько соединений для каждого процесса и делать асинхронные действия. Таким образом, он более эффективен на системном уровне, потому что вы получите меньше процессов, но не для всех случаев использования в PHP требуется такая «сложная» настройка (например, обработка задачи и просто отправка назад). Кроме того, если бы я пошел на цикл событий, я бы не выбрал React, а Amp (https://github.com/amphp/amp), который намного более продвинутый, лучше разработан и управляется умными людьми. –