Задать вопрос

Как запустить парсер посредством POST и отдать его события через evensource?

Приветствую, уважаемые, очень нужна ваша помощь по вопросу server-side events.

Суть проблемы в следующем:

На фроненде есть форма с параметрами для запуска долгоиграющего парсера. Так же, присутствует textarea, которое выполняет роль realtime лога работы этого парсера. Форма отправляется посредство POST запроса через ajax посредством известного jquery плагина jquery-form. Сам же парсер генерирует события(events), которые должны отправляться обратно на форму, в teaxarea.

Вопрос в следующем:

Как запустить парсер посредством POST и отдать его события через evensource? Ведь, насколько я понял из документации по SSE, браузер дергает этот же парсер GET запросом, когда подписывается на его события. Не могу понять как их связать вместе. Возможно, я все не правильно понял, и не нужно форму оправлять, а лишь путем сериалайза генерировать GET для EventSource, что-то похожее на:
var source = new EventSource('stream.php?field1=value&filendN=value');
и слушать события по этому адресу.

Подскажите, пожалуйста, как решаете подобные задачи?
  • Вопрос задан
  • 2731 просмотр
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
avalak
@avalak
GET запросы не должны менять состояние.

1. Делаете post запрос к форме.
1.a На сервере добавляете задание в очередь, клиенту возращаете json с id стрима
2. На клиенте слушаете sse с этим id.
2.a Воркер пишет в sse со связанным id события

Либо, если sse у вас уже открыт, возвращаете id задачи, а в sse отправляете события связанные с этим id. Если задач больше одной это лучший вариант.
Ответ написан
Комментировать
@WEBIVAN
Возможно в вашем случае лучшим решением будет не ajax а бесконечный iframe.
Ответ написан
Комментировать
@Bolyk Сорри за оффтоп, но можно между делом у Вас спросить: можете накидать ссылок по теме реализации server-side. Тема интересна, погуглил и как-то ничего не нашел. Интересна сама технология работы таких приложений и чем это можно реализовать. Спасибо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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