fpweb выдать поток

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

fpweb выдать поток

Сообщение gluhow » 26.06.2019 12:50:31

Пытаюсь написать REST приложение с помощью FastCGI.
Я хочу выдать пользователю поток данных, который бы он мог сохранить у себя на компе. Данные я сам генерю, причем не очень быстро.
Попробовал изобразить что-то типа:
Код: Выделить всё
procedure TFPWebModule1.DataModuleRequest(Sender: TObject; ARequest: TRequest;
  AResponse: TResponse; var Handled: Boolean);

    AResponse.ContentType:='application/octet-stream';
    Stream:=TStringStream.Create('');
    AResponse.ContentStream:=Stream;
    while (True) do
       begin
         Inc(Counter);
         OldPosition:=Stream.Position;
         Stream.WriteString(Counter.ToString+' ');
         NewPosition:=Stream.Position;
         Stream.Position:=OldPosition;
         AResponse.ContentLength:=NewPosition-OldPosition;
         AResponse.SendContent;
         Stream.Position:=NewPosition;
       end;

end;

Но при этом выдаётся только первые данные. А хотелось бы выдавать по мере рассчета. В каком направлении стоит двигаться?
gluhow
новенький
 
Сообщения: 41
Зарегистрирован: 13.08.2015 15:30:20

Re: fpweb выдать поток

Сообщение grot » 26.06.2019 20:39:57

Но при этом выдаётся только первые данные. А хотелось бы выдавать по мере рассчета. В каком направлении стоит двигаться?


Надо начать, простите за банальность, с понимания основ Web ( протокола HTTP )...

После :
AResponse.SendContent;
соединение с клиентом закрывается - ибо это HTTP 1.0 ( v 1.1 - не поддерживает fpWeb )

Надо сделать так , как обычно отдается какой-нибудь файл с сервера :
1. создать файл
2. отдать его за 1 раз ( см. возможные ограничения по объему в промежуточных звеньях )

а для подхода "по мере расчета" существуют WebSockets
- нужен "понимающий это клиент" и другой сервер - не поддерживается fpWeb ...
grot
новенький
 
Сообщения: 74
Зарегистрирован: 13.02.2010 16:33:03

Re: fpweb выдать поток

Сообщение gluhow » 27.06.2019 08:44:26

Спасибо, буду читать WebSockets
gluhow
новенький
 
Сообщения: 41
Зарегистрирован: 13.08.2015 15:30:20

Re: fpweb выдать поток

Сообщение olegy123 » 28.06.2019 08:56:10

А не проще с самого клиента запрашивать следующую порцию.. как зделано в Youtube
Этот кусок данных считал нужен следующий.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 29

Рейтинг@Mail.ru