Существует ли альтернатива для ajax, который не требует опроса без серверных модификаций?

Если вы хотите ограничиться этими четырьмя операциями, просто определите тип самостоятельно:

data ArithOp = Plus | Minus | Times | Div

as_fun Plus = (+)
as_fun Minus = (-)
as_fun Times = (*)
as_fun Div = (/)
11
задан Cœur 30 April 2017 в 12:19
поделиться

6 ответов

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

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

4
ответ дан 3 December 2019 в 02:53
поделиться

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

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

Править: Я также рекомендовал бы иметь тайм-аут по запросу. Таким образом, если ничего не происходит для, говорят 2 секунды, "никакое изменение" сообщение не передают обратно. Тем путем клиент знает, что сервер все еще жив и обрабатывает свой запрос.

8
ответ дан 3 December 2019 в 02:53
поделиться

Сервер должен принять участие в этом. Согласуйте с поставщиком услуг хостинга, какие модули доступны. Или попытайтесь убедить их поддерживать Комету.

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

1
ответ дан 3 December 2019 в 02:53
поделиться

Так как это отмечено “html5”: HTML5 имеет <eventsource> и WebSocket, но сторона реализации находится все еще в будущем времени на практике.

Opera реализовал старую версию <eventsource> названный <event-source>.

5
ответ дан 3 December 2019 в 02:53
поделиться

Комета обычно используется для такого рода вещи, и это может быть хрупкая установка, поскольку это не особенно общая технология, таким образом, может быть легко не "разобраться в нем". Тем не менее существует больше ресурсов, доступных теперь чем тогда, когда я в последний раз попробовал его ~2 года назад.

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

Можно попробовать долгий метод опроса, где Ajax позволяет очень большой тайм-аут (например, 30 секунд), и вращения handler.php, не отвечая, пока он не имеет что-то для создания отчетов, затем возвращается. (Вы захотите удостовериться, что вращение не является ресурсоемким). Если handler.php "истекает", и ничего не происходит, имейте его выход и позвольте Ajax опросить снова. Так как это только происходит каждые 30 секунд, это будет огромное улучшение за ~5 раз в секунду. Это свело бы Ваш опрос к минимуму.

Но это - вид вещи, для которой разработана Комета.

11
ответ дан 3 December 2019 в 02:53
поделиться

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

1
ответ дан 3 December 2019 в 02:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: